web-dev-qa-db-fra.com

git: liste uniquement les nouveaux fichiers

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.

26
BetaRide

Je voudrais utiliser quelque chose comme git status --porcelain | grep "^A" | cut -c 4-

16
Rom1

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
72
andsens

Vous pouvez utiliser git status --short pour obtenir la liste des fichiers. 

15
vpatil

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
12
Keith Hanlan
git status | grep "new file:" | cut -c 14-

git status | grep "modified:" | cut -c 14- 
0
Raviv Shweid

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
 ....
0
SuperNova