Git: liste uniquement les fichiers "non suivis" (aussi, commandes personnalisées)

Existe-t-il un moyen d'utiliser une commande comme git ls-files pour afficher uniquement les fichiers non suivis?

La raison pour laquelle je demande est parce que j'utilise la commande suivante pour traiter tous les fichiers supprimés:

git ls-files -d | xargs git rm

Je voudrais quelque chose de similaire pour les fichiers non suivis:

git some-command --some-options | xargs git add

J'ai pu trouver l'option -o à git ls-files, mais ce n'est pas ce que je veux car il montre aussi des fichiers ignorés. J'ai également pu trouver la commande longue et laide suivante:

git status --porcelain | grep '^??' | cut -c4- | xargs git add

Il semble qu'il doit y avoir une meilleure commande que je peux utiliser ici. Et s'il n'y en a pas, comment créer des commandes git personnalisées?

256
demandé sur Nick Volynkin 2010-09-27 09:30:20

8 réponses

Pour lister les fichiers non suivis, essayez:

git ls-files --others --exclude-standard

Joli alias pour ajouter des fichiers non suivis:

au = !git add $(git ls-files -o --exclude-standard)

Edit: Pour référence: git-ls-fichiers

418
répondu takeshin 2017-12-19 17:28:59

Si vous souhaitez simplement supprimer des fichiers non suivis, procédez comme suit:

git clean -df

Ajoutez x à cela si vous souhaitez également inclure des fichiers spécifiquement ignorés. J'utilise git clean -dfx un beaucoup tout au long de la journée.

Vous pouvez créer un git personnalisé en écrivant simplement un script appelé git-whatever et en l'ayant dans votre chemin.

56
répondu Dustin 2010-09-27 05:34:30

git add -A -n fera ce que vous voulez. -A ajoute tous les fichiers non suivis au repo, -n en fait un dry-run où l'ajout n'est pas effectué mais la sortie d'état est donnée listant chaque fichier que aurait ajouté.

39
répondu Mike Lococo 2012-10-29 10:12:19

La réponse acceptée se bloque sur les noms de fichiers avec de l'espace. Je ne peux pas le commenter (faible score de stackoverflow jusqu'à présent), et je ne suis pas sûr de savoir comment mettre à jour la commande alias, donc je vais mettre la version améliorée ici:

git ls-files -z -o --exclude-standard | xargs -0 git add
25
répondu youurayy 2011-12-14 14:31:21

, Tout est très simple

Pour obtenir la liste de tous les sans traces de fichiers utiliser la commande git status avec option -u (--sans traces-files)

git status -u
17
répondu Valentyna 2017-12-19 17:19:15

Lors de la recherche de fichiers à ajouter potentiellement. La sortie de git show fait cela mais elle inclut aussi beaucoup d'autres choses. La commande suivante est utile pour obtenir la même liste de fichiers, mais sans tous les autres trucs.

 git status --porcelain | grep "^?? " | sed -e 's/^[?]* //'

Ceci est utile lorsqu'il est combiné dans un pipeline pour trouver des fichiers correspondant à un modèle spécifique, puis le rediriger vers git add.

git status --porcelain | grep "^?? "  | sed -e 's/^[?]* //' | \
egrep "\.project$|\.settings$\.classfile$" | xargs -n1 git add
5
répondu cmac 2015-06-17 11:57:21

Je sais que c'est une vieille question, mais en termes de liste des fichiers non suivis, j'ai pensé en ajouter un autre qui répertorie également les dossiers non suivis:

Vous pouvez utiliser l'opération git clean avec -n (Dry run) pour vous montrer quels fichiers il va supprimer (y compris le .fichiers gitignore) par:

git clean -xdn

Ceci a l'avantage de montrer tous les fichiers et tous les dossiers qui ne sont pas suivies. Paramètres:

  • x - Affiche tous les fichiers non suivis (y compris ignoré par git et d'autres, comme la sortie de construction, etc...)
  • d - afficher les répertoires non suivis
  • n - et la plupart important! - dryrun, c'est-à-dire Ne supprimez rien, utilisez simplement le mécanisme clean pour afficher les résultats.
1
répondu code_fodder 2018-02-28 13:11:42

Je pense que ce sera la même chose que l'affiche originale prévue:

git add .

0
répondu Tim Fulmer 2012-06-04 21:36:32