Git: 1. répertoriez tous les fichiers d'une branche, 2. comparez les fichiers d'une branche différente

88
  1. Vous recherchez une commande comme ls -Rou dir/squi peut lister tous les fichiers dans un commit / branch.
  2. Existe-t-il une commande permettant de comparer deux fichiers de branches différentes?
Scud
la source

Réponses:

136
  1. git ls-tree -r --name-only <commit>(où au lieu de <commit>là peut être <branch>).
    Vous pouvez également utiliser l' -toption qui répertorie les sous-répertoires avant de les descendre
  2. git diff <branchA>:<fileA> <branchB>:<fileB>,
    ou si vous souhaitez comparer le même fichiergit diff <branchA> <branchB> -- <file>
Jakub Narębski
la source
4
Si vous voulez lister un répertoire spécifique, vous pouvez ajouter un signe deux-points suivi du chemin vers la branche ie: git ls-tree -r --name-only master: répertoire / chemin / nom
miller le gorille
25

Pour comparer le même fichier de différentes branches:

git diff branch_1..branch_2 file.txt

Pour lister tous les fichiers dans un objet d'arborescence:

git ls-tree -r branch
Dan Loewenherz
la source
J'obtiens "git: 'ls' n'est pas une commande git. Voir 'git --help'." et j'utilise git v 2.19.0.
Andrew S
1
Ce n'est pas seulement ls, vous avez oublié la -treefin :)
Dan Loewenherz
Ah j'ai supposé que c'était ls -tree. Je pensais que -tree était un interrupteur. Merci.
Andrew S
24

Pour lister tous les fichiers ajoutés dans la nouvelle branche

git diff --name-only branch1 master
Peter Mansell
la source
4
Cela répertorie uniquement les noms de tous les fichiers qui ont changé, pas seulement les nouveaux fichiers.
Meredith
2

À partir de Git v2.1.0 [15/08/14]

Pour lister, vous pouvez utiliser git ls-filespour lister tous les fichiers de manière récursive dans le répertoire index / de travail actuel. Vous pouvez vous référer à Git-SCM Docs / git-ls-files ou taper man git-ls-filessi vous avez installé Git et que des pages de manuel sont disponibles.

Il a des options agréables pour afficher les fichiers de différentes manières comme cached, staged, deleted, modified, ignoredou otherspour le non suivi. Il prend également en charge les modèles correspondants. Ayant également un --debugarg, vous pouvez lister facilement creation time, modification time, inode id, owner & group id, sizeet flagspour les fichiers.


Pour le diff de deux branches, utilisez simplement git diff <branch> <other branch>comme indiqué dans d'autres réponses.

Berkant Ipek
la source
2

Lister les fichiers dans la branche avec git ls-files

  1. Essayez git ls-filesdécrit dans le docu git-scm :
# Switch to <branch> of interest
$ git checkout <branch>
# List all files in <branch>
$ git ls-files

Pour plus d'options, consultez la documentation .

drstoop
la source