Uno de los comandos que encuentro increíblemente útil en Git es git add -u
lanzar todo menos los archivos sin seguimiento al índice. ¿Hay una inversa de eso? En los últimos meses, a menudo me he encontrado en una posición en la que he agregado interactivamente algunas actualizaciones al índice y quiero agregar todos los archivos no rastreados a ese índice antes de comprometerme.
¿Hay alguna manera de agregar solo los archivos no rastreados al índice sin identificarlos individualmente? No veo nada obvio en los documentos de ayuda, pero ¿tal vez me lo estoy perdiendo?
Gracias.
.gitignore
está específicamente diseñado para ese propósito, nogit add -u
.Respuestas:
Es fácil con
git add -i
. Escribaa
(para "agregar sin seguimiento"), luego*
(para "todos"), luegoq
(para salir) y listo.Para hacerlo con un solo comando:
echo -e "a\n*\nq\n"|git add -i
fuente
echo -e "a\n*\nq\n"|git add -i
Argument list too long
... ¡tan cerca!git add -i
luego4
añadir sin seguimiento después*
de todo, entoncesq
dejar de fumargit ls-files -o --exclude-standard
proporciona archivos sin seguimiento, por lo que puede hacer algo como a continuación (o agregar un alias):fuente
-o, --others
Show other (i.e. untracked) files in the output
No es exactamente lo que estás buscando, pero esto me ha resultado bastante útil:
Agregará todos los archivos al índice, pero sin su contenido. Los archivos que no fueron rastreados ahora se comportan como si fueran rastreados. Su contenido se mostrará en
git diff
, y puede agregar luego interactivamente congit add -p
.fuente
git commit -p
recorrer nuevos archivos también.Puede agregar esto a su archivo ~ / .gitconfig:
Luego, desde la línea de comandos, simplemente ejecute:
fuente
La gente ha sugerido canalizar la salida de
git ls-files
to,git add
pero esto fallará en los casos en que haya nombres de archivo que contengan espacios en blanco o caracteres globales como*
.La forma segura sería usar:
where
-z
le dice a git que use\0
terminadores de línea y-0
le dice a xargs lo mismo. La única desventaja de este enfoque es que la-0
opción no es estándar, por lo que solo algunas versiones loxargs
admiten.fuente
git ls-files
enumera los archivos en el directorio actual. Si desea enumerar archivos sin seguimiento desde cualquier parte del árbol, esto podría funcionar mejor:Para agregar todos los archivos sin seguimiento en el árbol:
fuente
Intenté esto y funcionó:
git stash
solo colocará todos los archivos rastreados modificados en una pila separada, luego los archivos sobrantes son archivos no rastreados. Luego, al hacer,git add .
se organizarán todos los archivos sin seguimiento, según sea necesario. Finalmente, para recuperar todos los archivos modificados de la pila haciendogit stash pop
fuente
Si tiene miles de archivos sin seguimiento (ugh, no pregunte)
git add -i
, no funcionará al agregarlos*
. Obtendrá un error que indicaArgument list too long
.Si también está en Windows (no pregunte # 2 :-) y necesite usar PowerShell para agregar todos los archivos sin seguimiento, puede usar este comando:
fuente
git ls-files -o --exclude-standard | % { git add $_ }
Muchos buenos consejos aquí, pero dentro de Powershell no pude hacerlo funcionar.
Soy un desarrollador de .NET y todavía utilizamos principalmente el sistema operativo Windows, ya que no hemos utilizado tanto .Net core y multiplataforma, por lo que mi uso diario con Git es en un entorno de Windows, donde el shell utilizado es más a menudo Powershell y no Git bash.
Se puede seguir el siguiente procedimiento para crear una función con alias para agregar archivos sin seguimiento en un repositorio de Git.
Dentro del archivo $ profile de Powershell (en caso de que falte, puede ejecutar: New-Item $ Profile)
Bloc de notas $ Perfil
Ahora agregue este método Powershell:
Guarde el archivo $ profile y vuelva a cargarlo en Powershell. Luego, vuelva a cargar su archivo $ profile con:. $ perfil
Esto es similar al comando de origen en entornos * nix en mi humilde opinión.
Entonces, la próxima vez que lo haga, si es un desarrollador que usa Powershell en Windows contra el repositorio de Git y solo desea incluir archivos sin seguimiento, puede ejecutar:
AddUntracked-Git
Esto sigue la convención de Powershell donde tienes sustantivos verbales.
fuente
git add. (agregue todos los archivos en este directorio)
git add -all (agrega todos los archivos en todos los directorios)
git add -N puede ser útil para enumerar cuáles para más adelante ...
fuente
git add -u
agregará archivos modificados sinPara agregar todos los archivos sin seguimiento, el comando git es
Además, si desea obtener más detalles sobre varias opciones disponibles, puede escribir el comando
en lugar del primer comando, con esto obtendrá más opciones, incluida la opción de agregar todos los archivos no rastreados como se muestra a continuación:
fuente