¿Hay alguna manera de hacer una git pull
que ignore cualquier cambio de archivo local sin eliminar el directorio y tener que realizar una git clone
?
rm -rf local_repo && git clone remote_url
.
¿Hay alguna manera de hacer una git pull
que ignore cualquier cambio de archivo local sin eliminar el directorio y tener que realizar una git clone
?
rm -rf local_repo && git clone remote_url
.
Respuestas:
Si quiere decir que desea que la extracción sobrescriba los cambios locales, haga la fusión como si el árbol de trabajo estuviera limpio, bueno, limpie el árbol de trabajo:
git reset --hard
git pull
Si hay archivos locales sin seguimiento que podría usar git clean
para eliminarlos. Utilícelo git clean -f
para eliminar archivos sin seguimiento, -df
para eliminar archivos y directorios sin seguimiento, y -xdf
para eliminar archivos o directorios sin seguimiento o ignorados.
Si, por otro lado, desea mantener las modificaciones locales de alguna manera, usaría el alijo para ocultarlas antes de tirar, luego vuelva a aplicarlas:
git stash
git pull
git stash pop
Sin embargo, no creo que tenga sentido ignorar literalmente los cambios: la mitad de la extracción es fusionar, y necesita fusionar las versiones comprometidas del contenido con las versiones que obtuvo.
git reset
sus archivos aún difieren del control remoto, lea stackoverflow.com/questions/1257592/…
git reset --hard
afecta a la primera, no a la segunda. Si desea restablecer completamente el estado del control remoto, git reset --hard origin/<branch>
pero a menudo y en este caso, esas dos confirmaciones por las que está por delante son el trabajo que realizó, no algo que desea desechar.
Para mí lo siguiente funcionó:
(1) Primero busque todos los cambios:
$ git fetch --all
(2) Luego reinicie el maestro:
$ git reset --hard origin/master
(3) Pull / actualizar:
$ git pull
Solo quieres un comando que dé exactamente el mismo resultado que rm -rf local_repo && git clone remote_url
, ¿verdad? También quiero esta característica. Me pregunto por qué git no proporciona dicho comando (como git reclone
o git sync
), ni svn proporciona dicho comando (como svn recheckout
o svn sync
).
Pruebe el siguiente comando:
git reset --hard origin/master
git clean -fxd
git pull
git clean -fxd
elimina archivos de .gitignore
también.
El siguiente comando no funcionará siempre . Si solo haces:
$ 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í...
Para comenzar realmente de nuevo, descargar thebranch y sobrescribir 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'
Mire git stash para colocar todos sus cambios locales en un "archivo stash" y volver al último commit. En ese punto, puede aplicar sus cambios escondidos o descartarlos.
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 cambian en el repositorio local, por git pull
lo que funcionará sin ningún problema.
Lo mejor de esto es que solo los archivos rastreados serán sobrescritos por los archivos en el repositorio, todos los demás archivos quedarán intactos.
esto funcionó para mí
git fetch --all
git reset --hard origin/master
git pull origin master
con la respuesta aceptada obtengo errores de conflicto
Yo suelo hacer:
git checkout .
git pull
En la carpeta raíz del proyecto.
.gitignore
"Agregar archivos no deseados a .gitignore funciona siempre y cuando no los hayas enviado inicialmente a ninguna rama".
También puedes ejecutar:
git update-index --assume-unchanged filename
https://chamindac.blogspot.com/2017/07/ignoring-visual-studio-2017-created.html