Używając git z linii poleceń, w jaki sposób mogę sprawić, aby git wyświetlał listę plików, które są śledzone w repozytorium?
Używając git z linii poleceń, w jaki sposób mogę sprawić, aby git wyświetlał listę plików, które są śledzone w repozytorium?
Odpowiedzi:
Jeśli chcesz wyświetlić listę wszystkich plików aktualnie śledzonych w ramach oddziału master, możesz użyć tego polecenia:
git ls-tree -r master --name-only
Jeśli chcesz listę plików, które kiedykolwiek istniały (tj. Zawierają usunięte pliki):
git log --pretty=format: --name-only --diff-filter=A | sort - | sed '/^$/d'
gitnie aktualizuje katalogów bezpośrednio. Zamiast tego przechowuje pliki i ich ścieżki. ls-treewyświetli wszystkie wersjonowane pliki. Aby lepiej zrozumieć to rozróżnienie, spróbuj ustawić pusty katalog do git. Pusty katalog nigdy nie pojawi się w zmianach etapowych. Jedynym sposobem na wersję takiego pustego katalogu jest faktyczna wersja pliku w tym katalogu. W przypadkach użycia, w których potrzebujesz takiego pustego katalogu zastępczego w kontroli wersji, możesz utworzyć fikcyjny plik w tym katalogu i wersję tego. Mam nadzieję, że wyjaśnienie jest jasne.
ls-tree masternie pokazuje śledzonych plików w obszarze testowym.
Pliki zarządzane przez git są pokazane przez git ls-files. Sprawdź stronę podręcznika.
ls... lubls -R
git ls-tree- odnosi się do pwd.
Akceptowana odpowiedź pokazuje tylko pliki z drzewa bieżącego katalogu. Aby wyświetlić wszystkie śledzone pliki, które zostały zatwierdzone (w bieżącym oddziale), użyj
git ls-tree --full-tree --name-only -r HEAD
--full-tree sprawia, że polecenie działa tak, jakbyś był w katalogu głównym repo.-rpowraca do podkatalogów. W połączeniu z --full-treetym zapewnia wszystkie zatwierdzone, śledzone pliki.--name-only usuwa informacje o SHA / uprawnieniach, gdy chcesz tylko ścieżki plików.HEADokreśla gałąź, dla której chcesz mieć listę śledzonych, zatwierdzonych plików. Możesz zmienić to na masterdowolną inną nazwę oddziału, ale HEADjest to zatwierdzenie, które sprawdziłeś w tej chwili.Jest to metoda od zaakceptowanej odpowiedzi na ~ zduplikowane pytanie https://stackoverflow.com/a/8533413/4880003 .
Dzięki temu możesz uzyskać kolorowe wydruki.
Używam tego jednowierszowego do wyświetlania śledzonych plików i katalogów w bieżącym katalogu bieżącej gałęzi:
ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d " " -f2) --name-only)
Możesz dodać go jako alias:
alias gl='ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d " " -f2) --name-only)'
Jeśli chcesz rekurencyjnie wyświetlać listę plików:
'ls' --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d " " -f2) --name-only)
I alias:
alias glr="'ls' --color=auto -d \$(git ls-tree -rt \$(git branch | grep \\* | cut -d \" \" -f2) --name-only)"
glrAlias podałeś wyglądał nieco dziwnie, więc zrobiłem to wersja bardziej zgodne z formatem pierwszego aliasu podałeś: alias glr='ls --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d " " -f2) --name-only)'. Testowane git version 2.20.1na Debianie 10.