Existe-t-il un moyen d'utiliser une commande comme git ls-files
pour n'afficher que les fichiers non suivis?
La raison pour laquelle je pose la question 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' -o
option git ls-files
, mais ce n'est pas ce que je veux, car il montre é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 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?
git
git-status
git-rm
git-stage
git-ls-files
Nous sommes tous Monica
la source
la source
git ls-files -d | xargs git rm
?git
ne fonctionne que sur les fichiers, il n'a aucun moyen de suivre les dossiers vides. Essayezfind . -type d -empty
plutôt.Réponses:
Pour répertorier les fichiers non suivis, essayez:
Si vous devez diriger la sortie vers
xargs
, il est sage de penser aux espaces blancs en utilisantgit ls-files -z
etxargs -0
:Bel alias pour ajouter des fichiers non suivis:
Edit: Pour référence: git-ls-files
la source
!
signifie au début de la ligne d'alias, ou où est-ce documenté?git add *
fera la même chose: ajouter tous les fichiers non suivis à l'exception de la norme (les fichiers dont les chemins sont couverts.gitignore
).[alias] lso = "!f() { cd $(git rev-parse --show-toplevel); git ls-files -o; }; f"
Si vous souhaitez simplement supprimer les fichiers non suivis, procédez comme suit:
ajoutez
x
à cela si vous souhaitez également inclure des fichiers spécifiquement ignorés. J'utilisegit clean -dfx
un grand nombre 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 plaçant sur votre chemin.la source
git add -A
ougit add -u
(selon ce qui vous semble le plus logique)git add -A -n
fera ce que vous voulez.-A
ajoute tous les fichiers non suivis au référentiel, en-n
fait undry-run
où l'ajout n'est pas effectué, mais la sortie d'état donne la liste de chaque fichier qui aurait été ajouté.la source
.gitignore
fichiers, ce qui est généralement ce que nous voulons, mais sinon,git add -fAn
.add '$file'
. Alors quegit ls-files --exclude-standard -o
donne une sortie nue, très chaude.La réponse acceptée se bloque sur les noms de fichiers avec espace. Je ne suis pas encore sûr de savoir comment mettre à jour la commande d'alias, je vais donc mettre la version améliorée ici:
la source
Tout est très simple
Pour obtenir la liste de tous les fichiers non suivis, utilisez la commande git status avec l' option -u (--untracked-files)
la source
--ignored
à lagit status -u
commandeLorsque vous recherchez des fichiers à ajouter potentiellement. La sortie de
git show
fait cela, mais elle comprend é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.Ceci est utile lorsqu'il est combiné dans un pipeline pour rechercher des fichiers correspondant à un modèle spécifique, puis le rediriger vers
git add
.la source
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 supprimera (y compris les fichiers .gitignore) en:
git clean -xdn
Cela a l'avantage d'afficher tous les fichiers et tous les dossiers qui ne sont pas suivis. Paramètres:
x
- Affiche tous les fichiers non suivis (y compris ignorés par git et autres, comme la sortie de build etc ...)d
- afficher les répertoires non suivisn
- et surtout ! - dryrun, c'est-à-dire que vous ne supprimez rien, utilisez simplement le mécanisme de nettoyage pour afficher les résultats.Il peut être un peu dangereux de le faire comme ça au cas où vous oublieriez le
-n
. Donc, je l'alias généralement dans git config.la source
Toutes les réponses précédentes que j'ai vérifiées répertorieraient également les fichiers à valider. Voici une solution simple et facile qui ne répertorie que les fichiers qui ne sont pas encore dans le repo et non soumis à
.gitignore
.ou
la source
Je pense que ce sera donc la même chose que l'affiche originale prévue:
git add .
la source
git/svn add .
, le chaton meurt.git add .
en toute impunité!.gitignore
correctement. Toujours bon à évitergit add .
, cependant. Mieux vautgit add -u
.