En utilisant la ligne de commande git, comment puis-je faire en sorte que git affiche une liste des fichiers qui sont suivis dans le dépôt ?
Utilisez git ls-tree -r HEAD --name-only si vous voulez lister les fichiers de la branche courante.
En utilisant la ligne de commande git, comment puis-je faire en sorte que git affiche une liste des fichiers qui sont suivis dans le dépôt ?
Si vous voulez lister tous les fichiers actuellement suivis sous la branche master
vous pouvez utiliser cette commande :
git ls-tree -r master --name-only
Si vous souhaitez obtenir une liste des fichiers ayant existé (y compris les fichiers supprimés) :
git log --pretty=format: --name-only --diff-filter=A | sort - | sed '/^$/d'
Utilisez git ls-tree -r HEAD --name-only si vous voulez lister les fichiers de la branche courante.
@NicolasLykkeIversen - git
ne versionne pas directement les répertoires. Au lieu de cela, il enregistre les fichiers et leurs chemins. ls-tree
produira tous les fichiers versionnés. Pour mieux comprendre cette distinction, essayez de mettre en scène un répertoire vide vers git
. Le répertoire vide n'apparaîtra jamais dans les modifications mises en place. La seule façon de versionner un tel répertoire vide est de versionner réellement un fichier sous ce répertoire. Pour les cas d'utilisation où vous avez besoin d'un tel répertoire vide dans le contrôle de version, vous pouvez créer un fichier factice sous le répertoire et le versionner. J'espère que l'explication est claire.
La réponse acceptée ne montre que les fichiers dans l'arborescence du répertoire courant. Pour afficher tous des fichiers suivis qui ont été livrés (sur la branche courante), utilisez
git ls-tree --full-tree --name-only -r HEAD
--full-tree
fait en sorte que la commande soit exécutée comme si vous étiez dans le répertoire racine du repo.-r
récure dans les sous-répertoires. Combiné avec --full-tree
cela vous donne tous les fichiers engagés et suivis.--name-only
supprime les informations SHA / permission pour les cas où vous ne voulez que les chemins d'accès aux fichiers.HEAD
spécifie la branche pour laquelle vous souhaitez obtenir la liste des fichiers suivis et validés. Vous pouvez changer ceci en master
ou tout autre nom de branche, mais HEAD
est le commit que vous avez vérifié en ce moment.Voici la méthode de la réponse acceptée à la question ~dupliquée https://stackoverflow.com/a/8533413/4880003 .
Tu pourrais vouloir une sortie colorée avec ça.
J'utilise cette ligne unique pour lister les fichiers et répertoires suivis dans le répertoire courant de la branche courante :
ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d " " -f2) --name-only)
Vous pourriez vouloir l'ajouter comme alias :
alias gl='ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d " " -f2) --name-only)'
Si vous voulez lister récursivement les fichiers :
'ls' --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d " " -f2) --name-only)
Et un alias :
alias glr="'ls' --color=auto -d \$(git ls-tree -rt \$(git branch | grep \\* | cut -d \" \" -f2) --name-only)"
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.
5 votes
Duplicata possible de Lister les fichiers dans le repo git local ?
2 votes
Je crois que c'est le cas. Mais il n'est pas juste de marquer cette question comme étant en double alors qu'elle a une meilleure réponse.
7 votes
Dans un univers parallèle, c'est troublant de voir combien les similitudes cette question comprend toutes les réponses, mais chacune avec son propre style.