Git: 1. список всех файлов в ветке, 2. сравнение файлов из другой ветки.

88
  1. Ищете команду типа ls -Ror, dir/sкоторая может перечислить все файлы в фиксации / ветке.
  2. Есть ли какая-нибудь команда, которая может сравнивать два файла из разных веток?
Скад
источник

Ответы:

136
  1. git ls-tree -r --name-only <commit>(где вместо <commit>может быть <branch>).
    Вы можете также использовать -tопцию, которая перечисляет подкаталоги перед тем, как перейти в них.
  2. git diff <branchA>:<fileA> <branchB>:<fileB>,
    или если вы хотите сравнить тот же файлgit diff <branchA> <branchB> -- <file>
Якуб Наребски
источник
4
Если вы хотите указать конкретный каталог, вы можете добавить двоеточие, за которым следует путь к ветке, например: git ls-tree -r --name-only master: directory / path / name
miller the gorilla
25

Чтобы сравнить один и тот же файл из разных веток:

git diff branch_1..branch_2 file.txt

Чтобы перечислить все файлы в древовидном объекте:

git ls-tree -r branch
Дэн Лёвенгерц
источник
Я получаю «git: 'ls' не является командой git. См. 'Git --help'». и я использую git v 2.19.0.
Эндрю С.
1
Это не просто ls, ты забыл -tree
про
Я предположил, что это ls -tree. Я думал, дерево было переключателем. Спасибо.
Эндрю С.
24

Чтобы перечислить все файлы, добавленные в новую ветку

git diff --name-only branch1 master
Питер Мэнселл
источник
4
Здесь перечислены только имена всех файлов, которые были изменены, а не только новые файлы.
Мередит
2

Начиная с Git v2.1.0 [15.08.14]

Для листинга вы можете использовать git ls-filesрекурсивный список всех файлов в текущем индексном / рабочем каталоге. Вы можете обратиться к Git-SCM Docs / git-ls-files или ввести, man git-ls-filesесли вы установили Git и у вас есть справочные страницы.

Он имеет хорошие возможности , чтобы показать файлы по - разному , как cached, staged, deleted, modified, ignoredили othersдля неотслеживаемых. Он также поддерживает сопоставление шаблонов. Имея также --debugARG, вы можете легко перечислить creation time, modification time, inode id, owner & group id, sizeи flagsдля файлов.


Для разницы двух веток просто используйте, git diff <branch> <other branch>как указано в других ответах.

Беркант Ипек
источник
2

Перечислить файлы в ветке с git ls-files

  1. Попробуйте, как git ls-filesописано в документе git-scm :
# Switch to <branch> of interest
$ git checkout <branch>
# List all files in <branch>
$ git ls-files

Дополнительные параметры см. В документации .

Drstoop
источник