![Git — список всех файлов, находящихся в настоящее время под контролем исходного кода?](https://rvso.com/image/1316427/Git%20%E2%80%94%20%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA%20%D0%B2%D1%81%D0%B5%D1%85%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%2C%20%D0%BD%D0%B0%D1%85%D0%BE%D0%B4%D1%8F%D1%89%D0%B8%D1%85%D1%81%D1%8F%20%D0%B2%20%D0%BD%D0%B0%D1%81%D1%82%D0%BE%D1%8F%D1%89%D0%B5%D0%B5%20%D0%B2%D1%80%D0%B5%D0%BC%D1%8F%20%D0%BF%D0%BE%D0%B4%20%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%B5%D0%BC%20%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D0%BE%D0%B4%D0%B0%3F.png)
Есть ли способ вывести список всех файлов, которые в данный момент находятся под контролем исходного кода в git? (Не только те, которые были изменены).
решение1
Если вы хотите вывести список всех файлов для определенной ветки, например master
:
git ls-дерево-r master --только-имя
Опция -r
позволит ему рекурсивно пройти по подкаталогам и вывести каждый файл, находящийся в настоящее время под контролем версий. Вы также можете указать HEAD
вместо master
, чтобы получить список для любой другой ветки, в которой вы можете находиться.
Если вы хотите получить список всех когда-либо существовавших файлов,глянь сюда:
гит-лог--pretty=формат: --name-only --diff-filter=A | сортировка -u
решение2
Команда git ls-files
сделает то, что вам нужно.
Источник:http://www.kernel.org/pub/software/scm/git/docs/git-ls-files.html
решение3
git ls-files
будут распечатаны только файлы в текущем рабочем каталоге.
Если, например, у вас есть git-репозиторий для 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
Если вы хотите указать путиродственникв ваш текущий каталог (shell), это сделает работу:
alias gls='git ls-tree -r master --name-only HEAD "`git config core.worktree`"'
и в примере выше, он выведет
README
../../../etc/ssh/sshd_config
решение4
Пожалуйста, посмотрите на изображение, справа есть две опции patch и Tree. Если вы выберете tree, вы сможете просмотреть структуру папок для каждого коммита.