Wierzę, że tak. Ale nie wydaje się słuszne oznaczanie tego jako duplikatu, gdy ma lepszą odpowiedź.
lindhe
5
we wszechświecie równoległym nie jest niesamowite, jak podobne jest to pytanie, w tym wszystkie odpowiedzi, a każda z nich ma swój charakterystyczny charakter.
Jeff Puckett
Odpowiedzi:
628
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):
Użyj git ls-tree -r HEAD --name-only, jeśli chcesz wyświetlić listę plików bieżącej gałęzi
Ramast
3
Dlaczego katalogów nie ma na liście?
Shuzheng
13
@NicolasLykkeIversen - 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.
Tuxdude
2
Uwaga: ls-tree masternie pokazuje śledzonych plików w obszarze testowym.
nn0p 18.04.16
Czy można wyświetlić tylko katalog najwyższego poziomu, jeśli zawiera wiele podkatalogów i plików?
Blaszard,
191
Pliki zarządzane przez git są pokazane przez git ls-files. Sprawdź stronę podręcznika.
Wydaje się, że pokazuje tylko pliki w bieżącym katalogu lub poniżej niego.
Lyle Z
11
Czy mogę to edytować, aby uwzględnić odpowiednie sekcje strony podręcznika?
Nathan Basanese
1
@NathanBasanese być może możesz dodać kolejną odpowiedź z tymi informacjami.
José Castro,
@LyleZ Być może ma to być zgodne z ls... lubls -R
flow2k
1
@LyleZ Również to zachowanie jest takie samo jak w przypadku git ls-tree- odnosi się do pwd.
flow2k
18
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.
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.
Odpowiedzi:
Jeśli chcesz wyświetlić listę wszystkich plików aktualnie śledzonych w ramach oddziału
master
, możesz użyć tego polecenia:Jeśli chcesz listę plików, które kiedykolwiek istniały (tj. Zawierają usunięte pliki):
źródło
git
nie aktualizuje katalogów bezpośrednio. Zamiast tego przechowuje pliki i ich ścieżki.ls-tree
wyświetli wszystkie wersjonowane pliki. Aby lepiej zrozumieć to rozróżnienie, spróbuj ustawić pusty katalog dogit
. 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 master
nie pokazuje śledzonych plików w obszarze testowym.Pliki zarządzane przez git są pokazane przez
git ls-files
. Sprawdź stronę podręcznika.źródło
ls
... lubls -R
git ls-tree
- odnosi się dopwd
.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
--full-tree
sprawia, że polecenie działa tak, jakbyś był w katalogu głównym repo.-r
powraca do podkatalogów. W połączeniu z--full-tree
tym zapewnia wszystkie zatwierdzone, śledzone pliki.--name-only
usuwa informacje o SHA / uprawnieniach, gdy chcesz tylko ścieżki plików.HEAD
określa gałąź, dla której chcesz mieć listę śledzonych, zatwierdzonych plików. Możesz zmienić to namaster
dowolną inną nazwę oddziału, aleHEAD
jest to zatwierdzenie, które sprawdziłeś w tej chwili.Jest to metoda od zaakceptowanej odpowiedzi na ~ zduplikowane pytanie https://stackoverflow.com/a/8533413/4880003 .
źródło
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:
Możesz dodać go jako alias:
Jeśli chcesz rekurencyjnie wyświetlać listę plików:
I alias:
źródło
glr
Alias 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)'
. Testowanegit version 2.20.1
na Debianie 10.