213 votes

Ajout de fichiers non suivis uniquement

Une des commandes que je trouve incroyablement utile dans Git est git add -u pour mettre tout sauf les fichiers non suivis dans l'index. Existe-t-il un inverse de cela ?

Par exemple, un moyen d'ajouter seulement les fichiers non suivis à l'index sans les identifier individuellement ?

1 votes

Pour ce qui est de "jeter tout ce qui n'est pas des fichiers non suivis dans l'index", .gitignore est spécifiquement conçu dans ce but, et non git add -u .

0 votes

De plus, demandez-vous d'ajouter les fichiers non suivis tout en supprimant tous les fichiers actuellement suivis, ou demandez-vous d'ajouter les fichiers non suivis ? sur le dessus de ceux qui sont actuellement suivis (ce qui fait que tout est suivi) ?

322voto

Mat Points 104488

C'est facile avec git add -i . Type a (pour "ajouter untracked"), puis * (pour "tous"), puis q (pour quitter) et vous avez terminé.

Pour le faire avec une seule commande : echo -e "a\n*\nq\n"|git add -i

8 votes

J'espérais qu'il y aurait quelque chose de moins, eh bien, interactif, mais c'est certainement mieux que le fichier par fichier. :-)

40 votes

echo -e "a\n*\nq\n"|git add -i

0 votes

@Mat merci donc la commande complète ----> git add -i a * q ? ??

49voto

manojlds Points 96599

git ls-files -o --exclude-standard donne des fichiers non tracés, donc vous pouvez faire quelque chose comme ci-dessous ( ou y ajouter un alias) :

git add $(git ls-files -o --exclude-standard)

1 votes

Alias gau="git ls-files -o --exclude-standard | xargs -i git add '{}'" fonctionne pour moi

0 votes

Git ls-files --help est une lecture très utile : -o, --others Show other (i.e. untracked) files in the output

1 votes

C'est bien, mais je crois que cela ne vous donnera que les fichiers non tracés du répertoire actuel. Vous devriez utiliser la réponse de pborenstein ci-dessus pour récupérer une liste de fichiers non suivis pour l'arbre de travail entier.

22voto

hasenj Points 36139

Ce n'est pas exactement ce que vous cherchez, mais j'ai trouvé cela assez utile :

git add -AN

Ajoutera tous les fichiers à l'index, mais sans leur contenu. Les fichiers qui n'étaient pas suivis se comportent maintenant comme s'ils étaient suivis. Leur contenu sera affiché dans git diff et vous pouvez les ajouter de manière interactive avec git add -p .

0 votes

C'est exactement ce que je recherchais - permet de git commit -p pour parcourir les nouveaux fichiers également.

13voto

joshuadavey Points 111

Vous pouvez ajouter ceci à votre fichier ~/.gitconfig :

[alias]
    add-untracked = !"git status --porcelain | awk '/\\?\\?/{ print $2 }' | xargs git add"

Ensuite, à partir de la ligne de commande, exécutez simplement :

git add-untracked

0 votes

J'aime cette approche, mais elle ne gère pas les espaces dans les noms de fichiers.

9voto

pborenstein Points 306

git ls-files liste les fichiers du répertoire courant. Si vous voulez lister les fichiers non suivis de n'importe où dans l'arborescence, ceci pourrait mieux fonctionner :

git ls-files -o --exclude-standard $(git rev-parse --show-toplevel)

Pour ajouter tous les fichiers non suivis dans l'arbre :

git ls-files -o --exclude-standard $(git rev-parse --show-toplevel) | xargs git add

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X