Git: 1. Список усіх файлів у гілці, 2. Порівняння файлів з іншої гілки


88
  1. Шукаємо команду, подібну ls -Rабо 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-дерево -r - лише ім'я 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.
Andrew S,

1
Справа не просто в тому ls, що ви забули -treeв кінці :)
Ден Ловенгерц,

А я припустив, що це ls -дерево. Я думав -дерево було перемикачем. Дякую.
Andrew S,

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

Для подальших варіантів перевірте документацію .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.