Відповіді:
Якщо ви хочете перерахувати всі файли для певної гілки, наприклад master
:
git ls-tree -r master - тільки ім'я
Ця -r
опція дозволить повторюватись у підкаталогах та друкувати кожен файл, який зараз знаходиться під контролем версій. Ви також можете вказати HEAD
замість того, master
щоб отримати список для будь-якої іншої гілки, в якій ви можете знаходитись.
Якщо ви хочете отримати список усіх файлів, що існували, дивіться тут :
git log --pretty = формат: - onlyname -diff-filter = A | сортувати -у
git ls-tree -r master --name-only
було б так само, як і перший варіант, не потребуючи cut
. Так, і ви можете вказати HEAD
замість того, master
чи просто ви хочете цей список для будь-якої галузі, на якій ви зараз перебуваєте.
-
? Це призводить до того, що деякі додаткові рядки показують деякі файли у другому стовпці, які повторюються з першого.
git ls-files
Команда буде робити те , що вам потрібно.
Джерело: http://www.kernel.org/pub/software/scm/git/docs/git-ls-files.html
git ls-files
замість git ls-tree -r master --name-only
, звичайно, простіше.
git-ls-files
бінарного. Існує git
двійковий з ls-files
командою. Посилання на документацію за змістом правильне, але технічно для застарілого двійкового файла.
git-commit
, git-init
, git-ls-files
і т.д. , навіть якщо ці програми на самому ділі підкоманду. Бінарного ніколи не було git-ls-files
, швидше за все. Міркування полягає в тому, що він відповідає механізму зовнішнього підкоманди, який дозволяє зареєструвати git foo
команду, записавши git-foo
двійковий файл.
git ls-files
буде друкувати файли лише в поточному робочому каталозі.
Якщо, наприклад, у вас є git repo для dotfiles ( core.worktree = /
), тоді у вас будуть файли поза коренем git, і ця проста команда більше не працюватиме.
Коротше кажучи, це спрацює:
git --git-dir "`git rev-parse --git-dir`" \
-C "`git config core.worktree || pwd`" \
ls-files
Приклад:
mkdir ~/dotfiles
cd ~/dotfiles
git config core.worktree /
# Ignore all files by default, else Git will find all files under "/"
echo "*" > .git/info/exclude
# Add files at the git repo's root and somewhere in the work tree
touch README
git add -f README
git add -f /etc/ssh/sshd_config
# `git status` would now print:
# new file: ../../../etc/ssh/sshd_config
# new file: README
git status
git commit -m "Initial commit"
# At this point, `git ls-files` prints only:
# README
git ls-files
# But you can print all files inside the work tree. This will print:
# etc/ssh/sshd_config
# home/yourusername/dotfiles/README
git --git-dir "`git rev-parse --git-dir`" -C "`git config core.worktree || pwd`" ls-files
Якщо ви хочете, щоб шляхи вказані відносно поточного каталогу (оболонки), це виконує роботу:
alias gls='git ls-tree -r master --name-only HEAD "`git config core.worktree`"'
і в наведеному вище прикладі вона надрукувала б
README
../../../etc/ssh/sshd_config
git ls-files
показано все в поточному каталозі та нижче. Він просто не відображає файли, видалені в репо.
Ви також можете використовувати gitk
інтерактивний переглядач репозиторіїв.
Погляньте на зображення, праворуч - два варіанти патча та дерево. Якщо ви вибрали дерево, ви можете переглянути структуру папок для кожного коміту.