Bueno, sí y no ...
Entiendo que desea que sus copias locales "anulen" lo que está en el control remoto, pero, oh, hombre, si alguien ha modificado los archivos en el repositorio remoto de alguna manera diferente , simplemente ignora sus cambios e intenta "forzar" tus propios cambios sin siquiera mirar posibles conflictos, bueno, lloro por ti (y tus compañeros de trabajo) ;-)
Dicho esto, sin embargo, es muy fácil hacer "lo correcto ..."
Paso 1:
git stash
en su repositorio local. Eso guardará sus actualizaciones locales en el escondite, luego revertirá sus archivos modificados a su estado previo a la edición.
Paso 2:
git pull
para obtener las versiones modificadas. Ahora, con suerte, eso no obtendrá ninguna versión nueva de los archivos que le preocupan. Si no es así, el siguiente paso funcionará sin problemas. Si lo hace , entonces usted tiene mucho trabajo por hacer, y usted será feliz de haberlo hecho.
Paso 3:
git stash pop
Eso fusionará las versiones modificadas que guardó en el Paso 1 con las versiones que acaba de extraer en el Paso 2. Si todo va bien, ¡estará listo!
Si, por otro lado, hubo conflictos reales entre lo que extrajo en el Paso 2 y sus modificaciones (debido a que otra persona editó en el ínterin), lo averiguará y se le indicará que los resuelva. Hazlo.
Las cosas funcionarán mucho mejor de esta manera: probablemente mantendrá sus cambios sin ningún trabajo real de su parte, mientras lo alerta sobre problemas serios y serios.
git commit
se producirán cambios locales antesgit pull
?Puede guardar sus cambios locales primero, luego extraer y luego sacar el alijo.
Cualquier cosa que anule los cambios desde el control remoto tendrá conflictos que tendrá que resolver manualmente.
fuente
Así que ha comprometido sus cambios locales en su repositorio local. Luego, para obtener cambios remotos en su repositorio local sin realizar cambios en sus archivos locales, puede usar
git fetch
. En realidadgit pull
es una operación de dos pasos: una no destructivagit fetch
seguida de unagit merge
. Consulte ¿Cuál es la diferencia entre 'git pull' y 'git fetch'? para más discusión.Ejemplo detallado:
Suponga que su repositorio es así (ha realizado cambios
test2
:Y el
origin
repositorio es así (alguien más se ha comprometidotest1
):En este momento, git se quejará y le pedirá que extraiga primero si intenta enviarlo
test2
al repositorio remoto. Si desea ver qué es test1 sin modificar su repositorio local, ejecute esto:Su repositorio local de resultados sería así:
Ahora tiene los cambios remotos en otra rama y mantiene intactos sus archivos locales.
Entonces, ¿qué sigue? Puede hacer un
git merge
, que tendrá el mismo efecto quegit pull
(cuando se combina con el anteriorgit fetch
), o, como prefiero, hacer ungit rebase origin/master
para aplicar su cambio encimaorigin/master
, lo que le da un historial más limpio.fuente