Git: 1. Wyświetl listę wszystkich plików w gałęzi, 2. porównaj pliki z innej gałęzi

88
  1. Szukasz polecenia takiego jak ls -Rlub, dir/sktóre może wyświetlić wszystkie pliki w zatwierdzeniu / gałęzi.
  2. Czy jest jakieś polecenie, które może porównać dwa pliki z różnych gałęzi?
Pomknąć
źródło

Odpowiedzi:

136
  1. git ls-tree -r --name-only <commit>(gdzie zamiast tego <commit>może być <branch>).
    Możesz także użyć -topcji, która wyświetla podkatalogi przed zejściem do nich
  2. git diff <branchA>:<fileA> <branchB>:<fileB>,
    Lub jeśli chcesz porównać ten sam plikgit diff <branchA> <branchB> -- <file>
Jakub Narębski
źródło
4
Jeśli chcesz wyświetlić konkretny katalog, możesz dodać dwukropek, a następnie ścieżkę do gałęzi, np .: git ls-tree -r --name-only master: directory / path / name
miller the gorilla
25

Aby porównać ten sam plik z różnych gałęzi:

git diff branch_1..branch_2 file.txt

Aby wyświetlić wszystkie pliki w obiekcie drzewa:

git ls-tree -r branch
Dan Loewenherz
źródło
Otrzymuję „git: 'ls' nie jest poleceniem git. Zobacz 'git --help'." i używam git v 2.19.0.
Andrew S,
1
Nie chodzi tylko o to ls, że zapomniałeś -treeo końcu :)
Dan Loewenherz
Ah, przypuszczałem, że to ls -tree. Myślałem, że drzewo było przełącznikiem. Dzięki.
Andrew S,
24

Aby wyświetlić wszystkie pliki dodane w nowej gałęzi

git diff --name-only branch1 master
Peter Mansell
źródło
4
Zawiera tylko nazwy wszystkich plików, które uległy zmianie, a nie tylko nowe pliki.
Meredith,
2

Od Git v2.1.0 [15.08.14]

Aby wyświetlić listę, możesz użyć git ls-filesrekurencyjnej listy wszystkich plików w bieżącym katalogu indeksowym / roboczym. Możesz odwołać się do Git-SCM Docs / git-ls-files lub wpisać, man git-ls-filesjeśli zainstalowałeś Git i masz dostępne strony podręcznika.

Ma ładne opcji, aby wyświetlić pliki w różnych sposobów, takich jak cached, staged, deleted, modified, ignoredlub othersdla untracked. Obsługuje również pasujące wzorce. Mając również --debugArg, można łatwo wymienić creation time, modification time, inode id, owner & group id, sizea flagsdla plików.


Aby uzyskać różnicę dwóch gałęzi, użyj po prostu git diff <branch> <other branch>tak, jak podano w innych odpowiedziach.

Berkant Ipek
źródło
2

Lista plików w gałęzi z git ls-files

  1. Spróbuj git ls-filesopisać w dokumentacji git-scm :
# Switch to <branch> of interest
$ git checkout <branch>
# List all files in <branch>
$ git ls-files

Więcej opcji można znaleźć w dokumentacji .

drstoop
źródło