Git: 1.Liste alle Dateien in einem Zweig auf, 2. vergleiche Dateien aus verschiedenen Zweigen

87
  1. Wenn Sie nach einem Befehl wie ls -Roder suchen dir/s, können alle Dateien in einem Commit / Zweig aufgelistet werden.
  2. Gibt es einen Befehl, der zwei Dateien aus verschiedenen Zweigen vergleichen kann?
Scud
quelle

Antworten:

134
  1. git ls-tree -r --name-only <commit>(wo statt <commit>da sein kann <branch>).
    Möglicherweise möchten Sie auch die -tOption verwenden, mit der Unterverzeichnisse aufgelistet werden, bevor Sie in diese absteigen
  2. git diff <branchA>:<fileA> <branchB>:<fileB>,
    oder wenn Sie dieselbe Datei vergleichen möchtengit diff <branchA> <branchB> -- <file>
Jakub Narębski
quelle
4
Wenn Sie ein bestimmtes Verzeichnis auflisten möchten, können Sie einen Doppelpunkt gefolgt vom Pfad zum Zweig hinzufügen, dh: git ls-tree -r - nur Name master: Verzeichnis / Pfad / Name
Miller the Gorilla
25

So vergleichen Sie dieselbe Datei aus verschiedenen Zweigen:

git diff branch_1..branch_2 file.txt

So listen Sie alle Dateien in einem Baumobjekt auf:

git ls-tree -r branch
Dan Loewenherz
quelle
Ich erhalte "git: 'ls' ist kein git-Befehl. Siehe 'git --help'." und ich benutze git v 2.19.0.
Andrew S
1
Es ist nicht nur so ls, dass du das -treeam Ende vergessen hast :)
Dan Loewenherz
Ah, ich nahm an, es sei ls-Baum. Ich dachte, Baum wäre ein Schalter. Vielen Dank.
Andrew S
22

Zum Auflisten aller im neuen Zweig hinzugefügten Dateien

git diff --name-only branch1 master
Peter Mansell
quelle
4
Hier werden nur die Namen aller geänderten Dateien aufgelistet, nicht nur die neuen Dateien.
Meredith
2

Ab Git v2.1.0 [15.08.14]

Zum Auflisten können Sie git ls-filesalle Dateien rekursiv im aktuellen Index- / Arbeitsverzeichnis auflisten . Sie können auf Git-SCM Docs / git-ls-files verweisen oder tippen, man git-ls-fileswenn Sie Git installiert haben und Manpages verfügbar sind.

Es hat schöner Optionen Dateien auf unterschiedliche Weise zu zeigen , wie cached, staged, deleted, modified, ignoredoder othersfür die untracked. Es unterstützt auch passende Muster. Nachdem auch eine --debugarg, können Sie einfach auflisten creation time, modification time, inode id, owner & group id, sizeund flagsfür Dateien.


Verwenden Sie für den Unterschied zwischen zwei Zweigen einfach git diff <branch> <other branch>wie in anderen Antworten angegeben.

Berkant Ipek
quelle
2

Listen Sie Dateien im Zweig mit auf git ls-files

  1. Versuchen Sie git ls-fileses im git-scm-Dokument :
# Switch to <branch> of interest
$ git checkout <branch>
# List all files in <branch>
$ git ls-files

Weitere Optionen finden Sie in der Dokumentation .

drstoop
quelle