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?

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>

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

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

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.


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 .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.