Використовуючи командний рядок git, як я можу змусити git показати список файлів, які відслідковуються у сховищі?
Використовуючи командний рядок git, як я можу змусити git показати список файлів, які відслідковуються у сховищі?
Відповіді:
Якщо ви хочете перерахувати всі файли, які зараз відслідковуються під гілкою master
, ви можете використовувати цю команду:
git ls-tree -r master --name-only
Якщо ви хочете список файлів, які коли-небудь існували (тобто включаючи видалені файли):
git log --pretty=format: --name-only --diff-filter=A | sort - | sed '/^$/d'
git
не версій каталогів безпосередньо. Натомість він зберігає файли та їх шляхи. ls-tree
виведе всі файли з версією. Щоб краще зрозуміти це відмінність, спробуйте створити порожній каталог для git
. Порожній каталог ніколи не відображатиметься в поетапних змінах. Єдиний спосіб версії такого порожнього каталогу - це фактична версія файлу під каталогом. Для випадків використання, коли вам потрібен такий порожній каталог заповнювачів заповнення версій, ви можете створити фіктивний файл під каталогом та його версію. Сподіваюся, пояснення зрозуміло.
ls-tree master
не відображаються відстежені файли в області постановки.
Файли, якими керує git, показані git ls-files
. Перегляньте його сторінку керівництва.
ls
... абоls -R
git ls-tree
- відносно pwd
.
Прийнята відповідь показує лише файли в дереві поточного каталогу. Щоб показати всі відсліджені файли, які були зроблені (у поточній гілці), використовуйте
git ls-tree --full-tree --name-only -r HEAD
--full-tree
змушує команду виконуватись так, ніби ви знаходитесь у кореневій директорії repo.-r
повторюється у підкаталоги. У поєднанні з --full-tree
цим ви отримуєте всі віддані, відслідковані файли.--name-only
видаляє інформацію про дозвіл SHA / дозволу, коли ви просто хочете шляхи до файлу.HEAD
визначає, для якої гілки ви хочете список відстежених, скоєних файлів. Ви можете змінити це на master
будь-яку іншу назву філії, але HEAD
це перевірка, яку ви перевірили прямо зараз.Це метод із прийнятої відповіді на ~ дублікат питання https://stackoverflow.com/a/8533413/4880003 .
Можливо, ви хочете кольоровий вихід із цим.
Я використовую цей однокласник для перерахування відстежуваних файлів та каталогів у поточному каталозі поточної гілки:
ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d " " -f2) --name-only)
Ви можете додати його як псевдонім:
alias gl='ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d " " -f2) --name-only)'
Якщо ви хочете рекурсивно перелічити файли:
'ls' --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d " " -f2) --name-only)
І псевдонім:
alias glr="'ls' --color=auto -d \$(git ls-tree -rt \$(git branch | grep \\* | cut -d \" \" -f2) --name-only)"
glr
Ім'я користувача ви при умови , що виглядало трохи дивно , так що я зробив варіант більше відповідає формату першого псевдоніма ви надали: alias glr='ls --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d " " -f2) --name-only)'
. Протестовано git version 2.20.1
на Debian 10.