Czy mogę uzyskać listę plików oznaczonych --assume-niezmieniona?


325

Co oznaczyłem jako --assume-unchanged? Czy jest jakiś sposób, aby dowiedzieć się, co ukryłem, korzystając z tej opcji?

Przekopałem się przez .git/katalog i nie widzę niczego, co wyglądałoby tak, jak się spodziewałem, ale musi gdzieś być. Zapomniałem, co zaznaczyłem w ten sposób kilka tygodni temu i teraz muszę udokumentować te szczegóły przyszłym programistom.

Odpowiedzi:


449

Możesz użyć git ls-files -v. Jeśli drukowany znak jest pisany małymi literami, plik jest oznaczany jako zakładany bez zmian.

Aby wydrukować tylko niezmienione pliki, użyj:

git ls-files -v | grep '^[[:lower:]]'

Aby objąć swojego leniwego programistę, zmień to w alias git . Edytuj .gitconfigplik, aby dodać ten fragment:

[alias]
    ignored = !git ls-files -v | grep "^[[:lower:]]"

Teraz wpisanie git ignoreddaje wynik w następujący sposób:

h path/to/ignored.file
h another/ignored.file

42
git ls-files -v | grep ^ [az]
— Matt R

17
Mój system operacyjny najwyraźniej ma dziwną konfigurację sortowania, więc polecenie Matta nie zadziałało dla mnie. Oto, co dodałem w [alias]sekcji mojej .gitconfig:ignored = !git ls-files -v | grep "^[[:lower:]]"
— Abe Voelker,

15
Powodem [az] nie jest to, że powłoka rozwija go jako symbol wieloznaczny; jeśli bieżący katalog zawiera plik pasujący do tego wzorca (tj. pojedynczą małą literę), wówczas rozwinięciem tego jest nazwa pliku. Spróbuj dodać cytaty, np. „[Az]”
— DomQ

7
git ls-files -v | grep -e "^ [az]"
— Amir Ali Akbari

12
Sugerowane aliasy działają w celu znalezienia niezmienionych plików w bieżącym katalogu i poniżej. Jeśli chcesz mieć listę wszystkich „niezmienionych” plików w repozytorium, będziesz potrzebowaćgit ls-files -v `git rev-parse --show-toplevel` | grep "^[a-z]"
— Trebor Rude

65

Jedna wkładka

git ls-files -v | grep "^[a-z]"

Użyj aliasów

IMHO git hiddenjest lepszy dla plików oznaczonych jako --assume-unchanged:

git config --global alias.hidden '!git ls-files -v | grep "^[a-z]"'

Oto lista powiązanych aliasów, w których mam ~/.gitconfig:

[alias]
  hide = update-index --assume-unchanged
  unhide = update-index --no-assume-unchanged
  unhide-all = update-index --really-refresh
  hidden = !git ls-files -v | grep \"^[a-z]\"
  ignored = !git status -s --ignored | grep \"^!!\"

Aby działał w podkatalogach i obsługiwał argumenty :

  hidden = "!f(){ git -C \"$GIT_PREFIX\" ls-files -v \"$@\" | grep \"^[a-z]\";}; f"
  ignored = "!f(){ git -C \"$GIT_PREFIX\" status -s --ignored \"$@\" | grep \"^!!\";}; f"

Na przykład:

 # cd target
 # git ignored classes

Informacje o statusie pliku

Dla mnie większość ukrytych plików jest oznaczona flagą h, choć tak naprawdę jest kilka innych flag zgodnie z instrukcją git-ls-files-v:

-v
    Similar to -t, but use lowercase letters for files that are 
marked as assume unchanged (see git-update-index(1)).

O git ls-files-t:

This option (-t) identifies the file status with the following tags 
(followed by a space) at the start of each line:

H   cached
S   skip-worktree
M   unmerged
R   removed/deleted
C   modified/changed
K   to be killed
?   other

1
Ładne, łatwe do zapamiętania pseudonimy :) Dzięki
— PlagueHammer

1
Oto kilka bardziej elastycznych wariantów: hidden = "!f() { git ls-files -v \"$@\" | grep \"^[a-z]\"; }; f"i ignored = "!f() { git status -s --ignored \"$@\" | grep \"^!!\"; }; f". Pozwala to na przykład git ignored -- PATH1 PATH2na wyświetlanie listy zignorowanych plików tylko w określonych ścieżkach (przydatne, gdy masz wiele ignorowanych plików).
— sls

Dziękuję za pseudonim
— MOHRE

22

To polecenie działa dla mnie bardziej konsekwentnie. Będzie drukować tylko pliki wymienione jako „zakładaj bez zmian”.

git ls-files -v|grep "^h"

Używałem tego wiele razy w różnych środowiskach i działa idealnie.


5
W wierszu polecenia systemu Windows użyj grep "^h"zamiast pojedynczych cudzysłowów
— piękny

7

Rozwiązanie PowerShell, używając Select-String \ sls

git ls-files -v | sls -pattern ^h -casesensitive

3

Rozwiązanie wiersza polecenia systemu Windows za pomocą findstr :

git ls-files -v | findstr /B h
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.