Est-il possible d’utiliser une commande telle que git ls-files
pour n’afficher que les fichiers non suivis?
Je pose la question 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
sur git ls-files
, mais ce n'est pas ce que je veux, car elle affiche également les 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 y ait une meilleure commande que je puisse utiliser ici. Et s'il n'y en a pas, comment créer des commandes git personnalisées?
Pour lister les fichiers non suivis, essayez:
git ls-files --others --exclude-standard
Si vous devez rediriger la sortie vers xargs
, il est judicieux de tenir compte des espaces en utilisant git ls-files -z
et xargs -0
:
git ls-files -z -o --exclude-standard | xargs -0 git add
Bel alias pour l'ajout de fichiers non suivis:
au = !git add $(git ls-files -o --exclude-standard)
Edit: Pour référence: git-ls-files
Si vous souhaitez simplement supprimer les 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
a 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 le gardant sur votre chemin.
git add -A -n
fera ce que vous voulez. -A
ajoute tous les fichiers non suivis au référentiel, -n
en fait un dry-run
où l'ajout n'est pas effectué, mais la sortie de statut est donnée, répertoriant chaque fichier voudrais = ont été ajoutés.
La réponse acceptée se bloque sur les noms de fichiers avec de l'espace. Je ne sais pas trop comment mettre à jour la commande alias, je vais donc 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 fichiers non suivis tilisez la commande ) le statut git avec option ) -u (--untracked-files)
git status -u
Lorsque vous recherchez des fichiers à ajouter potentiellement. La sortie de git show
le fait, mais elle inclut également beaucoup d'autres choses. La commande suivante est utile pour obtenir la même liste de fichiers mais sans tous les autres éléments.
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 canaliser celui-ci 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 ce qui concerne la liste des fichiers non suivis, j’envisage d’en ajouter un autre qui répertorie également les dossiers non suivis:
Vous pouvez utiliser l'opération git clean avec -n (exécution à sec) pour vous indiquer les fichiers à supprimer (y compris les fichiers .gitignore) en:
git clean -xdn
Cela présente l'avantage de montrer tous les fichiers et tous les dossiers qui ne font pas l'objet d'un suivi. Paramètres:
x
- Affiche tous les fichiers non suivis (y compris ceux ignorés par git et autres, comme la sortie de la compilation, etc ...)d
- affiche les répertoires non suivisn
- et la plupart surtout! - dryrun, c’est-à-dire ne supprimez rien, utilisez le mécanisme de nettoyage pour afficher les résultats.Toutes les réponses précédentes que j'ai vérifiées listeraient également les fichiers à valider. Voici une solution simple et facile qui ne répertorie que les fichiers qui ne sont pas encore dans le référentiel et qui ne sont pas soumis à .gitignore
.
git status --porcelain | awk '/^\?\?/ { print $2; }'
Je pense que cela aura donc la même chose que l’affiche originale:
git add .