changes - Deshacer git update-index--skip-worktree
git undo merge (4)
Aha! Simplemente quiero:
git update-index --no-skip-worktree <file>
Hace un tiempo, hice esto para ignorar los cambios en un archivo rastreado por git:
git update-index --skip-worktree <file>
Ahora realmente quiero enviar cambios a ese archivo a la fuente. ¿Cómo puedo deshacer los efectos de skip-worktree
?
Gracias, Kevin
Basado en la respuesta @ GuidC0DE, aquí hay una versión para Powershell (uso posh-git )
git update-index --no-skip-worktree $(git ls-files -v | sls -pattern "^S"| %{$_.Line.Substring(2)})
Y como referencia también el comando opuesto para ocultar los archivos:
git update-index --skip-worktree $(git ls-files --modified)
De acuerdo con http://www.kernel.org/pub/software/scm/git/docs/git-update-index.html , use
git ls-files -v
para ver los archivos "asumir sin cambios" y "omitir-árbol de trabajo" marcados con una letra especial. Los archivos "skip-worktree" están marcados con S
Editar : como se mencionó en @amacleod , crear un alias para enumerar todos los archivos ocultos es un buen truco para que no tenga que recordarlo. Yo uso alias hidden="git ls-files -v | grep ''^S''"
en mi .bash_profile. ¡Funciona genial!
Si desea deshacer todos los archivos que se aplicó skip worktree, puede usar el siguiente comando:
git ls-files -v | grep -i ^S | cut -c 3- | tr ''/012'' ''/000'' | xargs -0 git update-index --no-skip-worktree
-
git ls-files -v
imprimirá todos los archivos con su estado -
grep -i ^S
filtrará archivos y seleccionará solo omitir worktree (S) u omitir worktree y asumir sin cambios (s), -i significa ignorar mayúsculas y minúsculas -
cut -c 3-
eliminará el estado y dejará solo las rutas, cortando desde el 3er carácter hasta el final -
tr ''/012'' ''/000''
reemplazará el carácter de fin de línea (/ 012) a cero (/ 000) -
xargs -0 git update-index --no-skip-worktree
pasará todas las rutas separadas por cero caracteres agit update-index --no-skip-worktree
para deshacer