La forma en que Git ignora mirar / rastrear un directorio / archivo en particular. solo ejecutas esto:
git update-index --assume-unchanged <file>
Ahora, ¿cómo lo deshaces para que se los vuelva a ver? (Llamémoslo sin asumir).
La forma en que Git ignora mirar / rastrear un directorio / archivo en particular. solo ejecutas esto:
git update-index --assume-unchanged <file>
Ahora, ¿cómo lo deshaces para que se los vuelva a ver? (Llamémoslo sin asumir).
Respuestas:
Para obtener deshacer / mostrar directorios / archivos que están configurados para asumir sin cambios, ejecute esto :
git update-index --no-assume-unchanged <file>
Para obtener una lista de los directorios / archivos que se assume-unchanged
ejecutan esto :
git ls-files -v|grep '^h'
git ls-files -v|grep '^h'|cut -c3-
, que le dará solo los nombres de los archivos, sin el prefijo "h".
assume-unchanged
, simplemente utilícelos git update-index --really-refresh
. Con ese comando, no necesita buscar git ls-files
primero los archivos .
Si este es un comando que usa con frecuencia, puede considerar tener un alias para él también. Añadir a su global .gitconfig
:
[alias]
hide = update-index --assume-unchanged
unhide = update-index --no-assume-unchanged
Cómo configurar un alias (si aún no lo sabe):
git config --configLocation alias.aliasName 'command --options'
Ejemplo:
git config --global alias.hide 'update-index --assume-unchanged'
git config... etc
Después de guardar esto en su .gitconfig
, puede ejecutar un comando más limpio.
git hide myfile.ext
o
git unhide myfile.ext
Esta documentación de git fue muy útil.
Según los comentarios, este también es un alias útil para averiguar qué archivos están ocultos actualmente:
[alias]
hidden = ! git ls-files -v | grep '^h' | cut -c3-
hidden = ! git ls-files -v | grep '^h' | cut -c3-
La función git update-index tiene varias opciones que puede encontrar escribiendo a continuación:
git update-index --help
Aquí encontrará varias opciones: cómo manejar con la función update-index.
[si no conoce 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 hayan agregado en la lista de ignorados.
git update-index --assume-unchanged <file>
git update-index --no-assume-unchanged <file>
salvó mi vida ... ok, podría sincronizar la carpeta nuevamente, pero quería una solución "real" para este problema.
Para sintetizar las excelentes respuestas originales de @adardesign, @adswebwork y @AnkitVishwakarma, y los comentarios de @Bdoserror, @Retsam, @seanf y @torek, con enlaces de documentación adicionales y alias concisos ...
Comandos básicos
Para restablecer un archivo que se supone que no ha cambiado a la normalidad:
git update-index --no-assume-unchanged <file>
Para enumerar todos los archivos que se supone que no han cambiado:
git ls-files -v | grep '^[a-z]' | cut -c3-
Para restablecer todos los archivos asumidos sin cambios a la normalidad:
git ls-files -v | grep '^[a-z]' | cut -c3- | xargs git update-index --no-assume-unchanged --
Nota: Este comando que se ha enumerado en otro lugar ya no parece restablecer todos los archivos asumidos sin cambios (creo que solía hacerlo y lo enumeró anteriormente como una solución):
git update-index --really-refresh
Atajos
Para que estas tareas comunes sean fáciles de ejecutar en git, agregue / actualice la siguiente sección de alias.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 = ! git ls-files -v | grep '^[a-z]' | cut -c3- | xargs git update-index --no-assume-unchanged --
hidden = ! git ls-files -v | grep '^[a-z]' | cut -c3-
git hidden
, puede lograr el mismo efecto sin alias de shell o scripts, usando !
así:hidden = ! git ls-files -v | grep '^h' | cut -c3-
--really-refresh
no (o ya no lo hace, tal vez lo hizo antes) borra los indicadores de asumir sin cambios en los archivos de índice.
Si desea deshacer todos los archivos que se aplicaron, suponga que no han cambiado con ningún estado, no solo en caché (git los marca por caracteres en minúsculas), 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 estadogrep '^[a-z]'
filtrará los archivos y seleccionará solo asumir sin cambioscut -c 3-
eliminará el estado y dejará solo rutas, cortando desde el tercer carácter hasta el finaltr '\012' '\000'
reemplazará el carácter de final de línea (\ 012) a cero (\ 000)xargs -0 git update-index --no-assume-unchanged
pasará todos los caminos separados por cero caracteres git update-index --no-assume-unchanged
a deshacerAdemás de @adardesign
la respuesta, si desea restablecer todos los archivos que se han agregado a la assume-unchanged
lista de no-assume-unchanged
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 simplemente eliminará la salida de dos caracteres de grep "h "
, es decir , luego escapará de cualquier espacio que pueda estar presente en los nombres de archivo, y finalmente || true
evitará que el comando termine prematuramente en caso de que algunos archivos en el bucle tengan errores.
Si está utilizando extensiones de Git , siga los pasos a continuación:
Estás listo.
Nada aquí que no esté cubierto. Pero me gustaría agregar mis 2 centavos. A veces, ejecuto una compilación y cambia muchos archivos y luego quiero trabajar en algo, por lo que este comando realmente me ayuda mucho.
git update-index --assume-unchanged `git status | grep modified | sed 's|modified:||g'| xargs`
Espero que alguien más lo encuentre útil también.
.gitignore
para ignorar tus artefactos de construcción.
.gitignore
pero eso es a veces, en mi experiencia no es suficiente. Pero entiendo el contexto en el que estás diciendo esto.
Ninguna de las soluciones funcionó para mí en Windows: parece usar capital en H
lugar de h
para el estado del archivo y el comando grep requiere un cuidado adicional, ya que ^
también representa el inicio de la línea y niega el siguiente carácter.
Solución de Windows
git ls-files -v | grep '^^H'
para enumerar todos los archivos no almacenados en cachégit ls-files -v | grep '^^H' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-skip-worktree
para deshacer la omisión de archivos de todos los archivos que se hicieron a través de update-index --skip-worktree
git ls-files -v | grep '^^H]' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-assume-unchanged
para deshacer la omisión de archivos de todos los archivos que se hicieron a través de update-index --assume-unchanged
git ls-files -v | grep '^^H'
para volver a enumerar todos los archivos no almacenados en caché y verificar si los comandos anteriores han funcionado; esto ahora no debería devolver nada