Quand je fais un git status
je reçois une liste de fichiers avec le préfixe new file:
. Comment puis-je obtenir uniquement cette liste? Je veux traiter ces fichiers en boucle simple dans un petit script Shell.
Je voudrais utiliser quelque chose comme git status --porcelain | grep "^A" | cut -c 4-
N'utilisez pas grep pour analyser la sortie git. Git a presque certainement les éléments que vous recherchez intégrés (sauf si vous optez pour des équipements très avancés).
Vous pouvez utiliser git diff
pour afficher les modifications. --name-only
montre seulement les noms de fichiers. --diff-filter=A
répertorie uniquement les fichiers ajoutés.
Si vous voulez voir les nouveaux fichiers que vous avez déjà ajoutés à l'index, utilisez --cached
, sinon, omettez-le. Pour voir les deux diff à HEAD
.
Les commandes ressemblent à ceci:
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
Vous pouvez utiliser git status --short pour obtenir la liste des fichiers.
Au lieu d'analyser la sortie de "git status", il est probablement plus élégant d'utiliser
git ls-files -o --exclude-standard
Comme avec git status
, ls-files
produira une sortie relative à votre répertoire de travail actuel.
Vous voudrez peut-être inclure l'option --full-name
:
git ls-files -o --exclude-standard --full-name
git status | grep "new file:" | cut -c 14-
git status | grep "modified:" | cut -c 14-
La liste des nouveaux fichiers ou pour obtenir des fichiers à ajouter à git, peut être obtenue en utilisant git status et la commande grep comme git status -s | grep ??
root@user-ubuntu:~/project-repo-directory# git status -s | grep ??
?? src/.../file1.js
?? src/.../file2.js
?? src/.../file3.js
....