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?
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
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.
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é.
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
, 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
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
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.
Je pense que ce sera la même chose que l'affiche originale prévue:
git add .