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.