example - Deshacer git update-index-asume-unchanged<file>
git assume no change (8)
La forma en que Git ignora ver / rastrear un directorio / archivo en particular. simplemente ejecuta esto:
git update-index --assume-unchanged <file>
Ahora, ¿cómo deshacerlo para que sean vistos de nuevo? (Llamémoslo un-asumir).
Agregando a la respuesta de @adardesign
, si desea restablecer todos los archivos que se han agregado a la lista de assume-unchanged
a no-assume-unchanged
de una sola vez, puede hacer lo siguiente:
git ls-files -v | grep ''^h'' | sed ''s/^..//'' | sed ''s// /// /g'' | xargs -I FILE git update-index --no-assume-unchanged FILE || true
Esto solo eliminará los dos caracteres de salida de grep, es decir, "h "
, luego escapará de los espacios que puedan estar presentes en los nombres de los archivos, y finalmente || true
|| true
evitará que el comando termine prematuramente en caso de que algunos archivos en el bucle tengan errores.
La función git update-index tiene varias opciones que puedes encontrar escribiendo a continuación:
git update-index --help
Aquí encontrará varias opciones: cómo manejar la función con el índice de actualización.
[si no sabes el nombre del archivo]
git update-index --really-refresh
[si conoce el nombre del archivo]
git update-index --no-assume-unchanged <file>
revertirá todos los archivos que se han agregado en la lista de ignorados a través.
git update-index --assume-unchanged <file>
Para sintetizar las excelentes respuestas originales de @adardesign, @adswebwork y @AnkitVishwakarma y los comentarios de @Bdoserror y @Retsam, con enlaces de documentación adicionales y un alias de shell ...
Comandos básicos
Para restablecer un archivo que es assume-unchanged volver a la normalidad:
git update-index --no-assume-unchanged <file>
Para listar todos los archivos que son asumidos-sin cambios:
git ls-files -v | grep ''^[a-z]'' | cut -c3-
Para restablecer todos los archivos supuesto-sin cambiar de nuevo a normal:
git update-index --really-refresh
Atajos
Para hacer que estas tareas comunes sean fáciles de ejecutar en git, agregue la siguiente sección a .gitconfig
para su usuario (por ejemplo, ~/.gitconfig
en un sistema * nix o macOS):
[alias]
hide = update-index --assume-unchanged
unhide = update-index --no-assume-unchanged
unhide-all = update-index --really-refresh
hidden = ls-files -v
Para facilitar la ejecución de la lista de todos los archivos que se suponen sin cambios en un shell que admite alias (como bash), cree un alias como:
alias git-hidden="git hidden | grep ''^[a-z]'' | cut -c3-"
Para shells sin alias, un script podría hacer el truco.
Si desea deshacer todos los archivos que se aplicaron asumiendo que no ha cambiado con ningún estado, no solo en caché (git los marca con caracteres en minúscula), puede usar el siguiente comando:
git ls-files -v | grep ''^[a-z]'' | cut -c 3- | tr ''/012'' ''/000'' | xargs -0 git update-index --no-assume-unchanged
-
git ls-files -v
imprimirá todos los archivos con su estado -
grep ''^[az]''
filtrará archivos y seleccionará solo para asumir sin cambios -
cut -c 3-
eliminará el estado y dejará solo las rutas, cortando desde el tercer carácter hasta el final -
tr ''/012'' ''/000''
reemplazará el carácter de final de línea (/ 012) por cero (/ 000) -
xargs -0 git update-index --no-assume-unchanged
pasará todas las rutas separadas por cero caracteres agit update-index --no-assume-unchanged
a undo
Si está utilizando Git Extensions , siga los pasos a continuación:
- Ir a la ventana de confirmación.
- Haga clic en el menú desplegable llamado Cambios de directorio de trabajo .
- Seleccione la opción Mostrar archivos sin cambios no asumidos .
- Haga clic derecho en el archivo que desea desasumir.
- Seleccione No asumir sin cambios .
Estás listo.
Si este es un comando que usa con frecuencia, también puede considerar tener un alias para él. Agregue a su .gitconfig
global:
[alias]
hide = update-index --assume-unchanged
unhide = update-index --no-assume-unchanged
Después de guardar esto en su .gitconfig
, puede ejecutar un comando de limpieza.
git hide myfile.ext
o
git unhide myfile.ext
Este resource fue muy útil.
Supongo (heh) que quiso --assume-unchanged
, ya que no veo ninguna opción --assume-changed
. La inversa de --assume-unchanged
es --no-assume-unchanged
.
Para obtener / deshacer / mostrar los archivos de dir que están configurados para asumir, sin cambios, ejecute esto :
git update-index --no-assume-unchanged <file>
Para obtener una lista de los archivos / del directorio que se assume-unchanged
ejecute esto :
git ls-files -v|grep ''^h''