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).
git
version-control
git-index
adardesign
fuente
fuente

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-unchangedejecutan esto :git ls-files -v|grep '^h'fuente
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ícelosgit update-index --really-refresh. Con ese comando, no necesita buscargit ls-filesprimero 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:Cómo configurar un alias (si aún no lo sabe):
Ejemplo:
Después de guardar esto en su
.gitconfig, puede ejecutar un comando más limpio.o
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:
fuente
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:
Aquí encontrará varias opciones: cómo manejar con la función update-index.
[si no conoce el nombre del archivo]
[si conoce el nombre del archivo]
revertirá todos los archivos que se hayan agregado en la lista de ignorados.
fuente
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.Supongo que querías decir
--assume-unchanged, ya que no veo ninguna--assume-changedopción. El inverso de--assume-unchangedes--no-assume-unchanged.fuente
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:
Para enumerar todos los archivos que se supone que no han cambiado:
Para restablecer todos los archivos asumidos sin cambios a la normalidad:
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):
Atajos
Para que estas tareas comunes sean fáciles de ejecutar en git, agregue / actualice la siguiente sección de alias
.gitconfigpara su usuario (por ejemplo,~/.gitconfigen un sistema * nix o macOS):fuente
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-refreshno (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 -vimprimirá 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-unchangedpasará todos los caminos separados por cero caracteresgit update-index --no-assume-unchangeda deshacerfuente
Además de
@adardesignla respuesta, si desea restablecer todos los archivos que se han agregado a laassume-unchangedlista deno-assume-unchangeduna sola vez, puede hacer lo siguiente: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|| trueevitará que el comando termine prematuramente en caso de que algunos archivos en el bucle tengan errores.fuente
Si está utilizando extensiones de Git , siga los pasos a continuación:
Estás listo.
fuente
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.
fuente
.gitignorepara ignorar tus artefactos de construcción..gitignorepero 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
Hlugar dehpara 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-worktreepara deshacer la omisión de archivos de todos los archivos que se hicieron a través deupdate-index --skip-worktreegit ls-files -v | grep '^^H]' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-assume-unchangedpara deshacer la omisión de archivos de todos los archivos que se hicieron a través deupdate-index --assume-unchangedgit 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 nadafuente
Si está utilizando eclipse, puede encontrar útil lo siguiente:
fuente