2011-04-24 13 views
5

Empecé a aprender git en los últimos días y tengo una pregunta básica.¿Cómo puedo descartar los cambios locales en mi repositorio de Git cuando saco una nueva versión de github?

Imagínese esta situación:

crea una carpeta vacía y ahí se crea un archivo foo.txt.

Con el fin de empujar los datos en el repositorio remoto (por ejemplo github), realizar los siguientes comandos:

  • git init -> con el fin de inicializar el repositorio en la carpeta
  • git add . -> en para añadir al índice de todos los archivos de la carpeta, en este caso foo.txt
  • git commit -m "First commit" -> Nos comprometemos hacer la primera
  • git remote add origin [email protected]:username/gitrepository.git -> Añadimos el repositorio gitHub
  • git push origin master -> empujamos los cambios al repositorio remoto

    1. Ahora en el repositorio GitHub tiene sólo un archivo foo.txt.

    2. Ahora está en otra máquina y desea utilizar el repositorio, por lo que crea una carpeta vacía y extrae los datos del repositorio remoto.
      Luego crea un archivo llamado bar.txt, elimina foo.txt, agrega el archivo (bar.txt) al índice, realiza una confirmación y envía los cambios al repositorio remoto.

    3. Ahora en el repositorio que tienen sólo el archivo bar.txt

    4. Pero ahora, en la primera máquina aún tenemos el archivo foo.txt, y si hacemos un tirón desde el repositorio remoto tenemos foo .txt y bar.txt.

Pero eso no es lo que me gustaría hacer, me gustaría tirar de todos los archivos desde el repositorio y trabajar sólo con esos archivos. Entonces, en este ejemplo, si solo tengo ahora bar.txt en el repositorio, cuando realizo una extracción, no quiero ningún otro archivo en la carpeta de mi proyecto.

¿Cómo lo logras?

Respuesta

5

creo que se ha perdido un paso en 2.

Tienes que eliminar el archivo foo.txt del índice. Requiere un comando específico ("git add."Sólo pone de archivos para el índice, pero no elimina los archivos):

  • git rm foo.txt
  • git add -u (elimina del índice de todos los archivos que ya no están en el espacio de trabajo)

Entonces comprometerse.

en el paso 3, después de un tirón en el primer equipo, el archivo foo debería haber desaparecido.

+0

creo haberme explicado mal. Imagine que tiene en un repositorio solamente una barra .tx t archivo, y en casa tiene su directorio de trabajo con un foo.txt. Si haces un pull desde github, tendrías tanto bar.txt como foo.txt en tu directorio de trabajo. Pero no quiero hacer eso, me gustaría tener el repositorio de github limpio cada vez que hago una extracción, lo que significa que si tengo solo bar.txt en github, cuando hago un pull solo quiero bar.txt en mi carpeta de trabajo y no más archivos. – rfc1484

+1

Un pull es un "fetch + merge". Si lo entiendo, no quiere una fusión con sus cambios locales. Aquí hay una manera de hacerlo, pero debo advertirle: sus cambios locales, incluso los cometidos, se perderán. PRIMERO: "origen de búsqueda de git" (en lugar de tirar). ENTONCES: "git reset --hard origin/master". –

+0

Eso es exactamente lo que necesitaba, ¡gracias! – rfc1484

1

La forma en que funciona git siempre tiene esos archivos en su repositorio (es decir, en la carpeta .git de su repositorio). La diferencia es que en el paso 4. una vez que hagas los cambios, todavía te queda tu copia de trabajo original (git solo se fusionará automáticamente si no has realizado ningún cambio). Creo que usted es una combinación de distancia de lo que quiere :)

Me parece Git Cheat-sheet muy útil.

Cuestiones relacionadas