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-unchanged
ejecutan 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-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
: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-changed
opción. El inverso de--assume-unchanged
es--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
.gitconfig
para su usuario (por ejemplo,~/.gitconfig
en 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-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
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 caracteresgit update-index --no-assume-unchanged
a deshacerfuente
Además de
@adardesign
la respuesta, si desea restablecer todos los archivos que se han agregado a laassume-unchanged
lista deno-assume-unchanged
una 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|| true
evitará 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
.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 deh
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 deupdate-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 deupdate-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 nadafuente
Si está utilizando eclipse, puede encontrar útil lo siguiente:
fuente