656 votes

Comment puis-je faire en sorte que git affiche une liste des fichiers qui font l'objet d'un suivi ?

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 ?

5 votes

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.

776voto

Tuxdude Points 8652

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'

83 votes

Utilisez git ls-tree -r HEAD --name-only si vous voulez lister les fichiers de la branche courante.

4 votes

Pourquoi les annuaires ne sont-ils pas répertoriés ?

17 votes

@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.

229voto

vonbrand Points 4785

Les fichiers gérés par git sont indiqués par git ls-files . Consultez la page de son manuel.

5 votes

Cela semble n'afficher que les fichiers situés dans le répertoire actuel ou en dessous.

12 votes

Puis-je modifier cette page pour y inclure les sections pertinentes de la page de manuel ?

2 votes

@NathanBasanese peut-être pouvez-vous ajouter une autre réponse avec cette information.

42voto

Nathan Points 1050

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 .

7voto

Bloody_fool Points 61

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.com

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.

Powered by:

X