Git pull ignorando los cambios locales?

¿Hay alguna manera de hacer un git pull que ignore los cambios en los archivos locales sin destruir el directorio y debería realizar la git clone ?

265
11 нояб. fijado por markdorison 11 nov. 2010-11-11 20:19 '10 a las 20:19 2010-11-11 20:19
@ 7 respuestas

Si desea deshabilitar los cambios locales, realice una combinación, como si el árbol de trabajo estuviera limpio, bueno, limpie el árbol de trabajo:

 git reset --hard git pull 

Si hay archivos locales no verificados, puede usar git clean para eliminarlos. Utilice git clean -f para eliminar archivos sin procesar, -df para eliminar archivos y directorios que no se pueden -xdf , y -xdf para eliminar archivos o directorios que -xdf o ignorar.

Si, por otro lado, desea guardar de alguna manera los cambios locales, debe usar el caché para ocultarlos antes de extraerlos y luego volver a aplicarlos:

 git stash git pull git stash pop 

No creo que tenga sentido ignorar literalmente los cambios, aunque la mitad del estiramiento es una fusión, y él necesita combinar las versiones perfectas del contenido con las versiones que extrajo.

463
11 нояб. La respuesta la da Jefromi el 11 de noviembre. 2010-11-11 20:25 '10 a las 8:25 pm 2010-11-11 20:25

Para mí funcionó:

(1) Primero seleccione todos los cambios:

 $ git fetch --all 

(2) Luego reinicie el maestro:

border=0
 $ git reset --hard origin/master 

(3) Pull / update:

 $ git pull 
110
23 марта '15 в 11:42 2015-03-23 11:42 Artur Barseghyan da la respuesta el 23 de marzo de 2015 a las 11:42 2015-03-23 ​​11:42

El siguiente comando por lo general no funciona . Si solo:

 $ git checkout thebranch Already on 'thebranch' Your branch and 'origin/thebranch' have diverged, and have 23 and 7 different commits each, respectively. $ git reset --hard HEAD is now at b05f611 Here the commit message bla, bla $ git pull Auto-merging thefile1.c CONFLICT (content): Merge conflict in thefile1.c Auto-merging README.md CONFLICT (content): Merge conflict in README.md Automatic merge failed; fix conflicts and then commit the result. 

y así sucesivamente

Para comenzar realmente descargando thebranch y sobrescribiendo todos sus cambios locales, simplemente haga lo siguiente:


 $ git checkout thebranch $ git reset --hard origin/thebranch 

Esto funcionará bien.

 $ git checkout thebranch Already on 'thebranch' Your branch and 'origin/thebranch' have diverged, and have 23 and 7 different commits each, respectively. $ git reset --hard origin/thebranch HEAD is now at 7639058 Here commit message again... $ git status # On branch thebranch nothing to commit (working directory clean) $ git checkout thebranch Already on 'thebranch' 
14
24 нояб. La respuesta es dada por el Dr. Beco el 24 de noviembre. 2014-11-24 03:10 '14 a las 3:10 2014-11-24 03:10

Si estás en Linux:

 git fetch for file in `git diff origin/master..HEAD --name-only`; do rm -f "$file"; done git pull 

El bucle for eliminará todos los archivos rastreados que se hayan cambiado en el repositorio local, por lo que git pull funcionará sin problemas.
Lo más agradable de esto es que solo los archivos de seguimiento serán sobrescritos por los archivos del repositorio, todos los demás archivos permanecerán intactos.

7
06 нояб. respuesta dada por Strahinja Kustudic 06 de noviembre 2012-11-06 02:40 '12 a las 2:40 2012-11-06 02:40

Mire el git stash para poner todos sus cambios locales en "cifrado de archivos" y vuelva a la última confirmación. En este punto, puede aplicar sus cambios ocultos o descartarlos.

7
11 нояб. La respuesta es dada por Seth Johnson el 11 de noviembre 2010-11-11 20:23 '10 a las 20:23 2010-11-11 20:23
 git fetch --all  git reset --hard origin/master 
1
12 сент. La respuesta la da Luca C. 12 sep. 2017-09-12 18:26 '17 a las 6:26 pm 2017-09-12 18:26

Esto le permitirá obtener la rama actual e intentar realizar un avance rápido:

 git fetch  git merge --ff-only origin/master 
0
06 мая '16 в 0:04 2016-05-06 00:04 la respuesta se da Petah 06 de mayo '16 a las 0:04 2016-05-06 00:04

Otras preguntas sobre etiquetas de o hacer una pregunta