tag - git: listar solo archivos nuevos
git tags best practices (6)
En lugar de analizar la salida del "estado de git", probablemente sea más elegante de usar
git ls-files -o --exclude-standard
Al igual que con el git status
, ls-files
producirá resultados relativos a su directorio de trabajo actual.
Es posible que desee incluir la --full-name
:
git ls-files -o --exclude-standard --full-name
Cuando hago un git status
obtengo una lista de archivos con el prefijo new file:
¿Cómo puedo obtener sólo esta lista? Quiero procesar estos archivos en un simple bucle en un pequeño script de shell.
Lista de archivos nuevos o para obtener archivos que se agregarán a git, se puede obtener usando git status y el comando grep como git status -s | grep ??
git status -s | grep ??
root@user-ubuntu:~/project-repo-directory# git status -s | grep ??
?? src/.../file1.js
?? src/.../file2.js
?? src/.../file3.js
....
No uses grep para analizar la salida de git. Es casi seguro que Git tiene las cosas que buscas integradas (excepto si vas por cosas realmente avanzadas).
Puedes usar git diff
para mostrar los cambios. --name-only
muestra los nombres de archivos. --diff-filter=A
enumera solo los archivos agregados.
Si desea ver los archivos nuevos que ya ha agregado al uso del índice --cached
, de lo contrario --cached
. Para ver ambos difieren a HEAD
.
Los comandos se ven así:
git diff --name-only --diff-filter=A --cached # All new files in the index
git diff --name-only --diff-filter=A # All files that are not staged
git diff --name-only --diff-filter=A HEAD # All new files not yet committed
Puedes usar git status --short para obtener la lista de archivos.
Yo usaría algo como git status --porcelain | grep "^A" | cut -c 4-
git status --porcelain | grep "^A" | cut -c 4-
git status | grep "new file:" | cut -c 14-
git status | grep "modified:" | cut -c 14-