Sposób, w jaki Git ignoruje oglądanie / śledzenie określonego katalogu / pliku. po prostu uruchom to:
git update-index --assume-unchanged <file>
Jak to cofnąć, aby można je było oglądać ponownie? (Nazwijmy to nieprzyjęciem).
git
version-control
git-index
adardesign
źródło
źródło
Odpowiedzi:
Aby uzyskać cofnięcie / pokaż katalog / pliki, które są ustawione na przyjęcie niezmienionej, uruchom to :
git update-index --no-assume-unchanged <file>
Aby uzyskać listę plików / katalogów, które są
assume-unchanged
uruchamiane :git ls-files -v|grep '^h'
źródło
git ls-files -v|grep '^h'|cut -c3-
, która da ci tylko nazwy plików, bez prefiksu „h”.assume-unchanged
, po prostu użyjgit update-index --really-refresh
. Dzięki temu poleceniu nie musiszgit ls-files
najpierw szukać plików .Jeśli jest to polecenie, którego często używasz - możesz również rozważyć użycie dla niego aliasu. Dodaj do swojej globalnej
.gitconfig
:Jak ustawić alias (jeśli jeszcze tego nie wiesz):
Przykład:
Po zapisaniu tego w swoim
.gitconfig
pliku możesz uruchomić czystsze polecenie.lub
Ta dokumentacja git była bardzo pomocna.
Zgodnie z komentarzami jest to również pomocny alias, aby dowiedzieć się, jakie pliki są obecnie ukryte:
źródło
hidden = ! git ls-files -v | grep '^h' | cut -c3-
git update-index ma kilka opcji, które możesz wpisać poniżej:
Tutaj znajdziesz różne opcje - jak obsługiwać za pomocą funkcji update-index.
[jeśli nie znasz nazwy pliku]
[jeśli znasz nazwę pliku]
przywróci wszystkie pliki, które zostały dodane do listy ignorowanych przez.
źródło
git update-index --no-assume-unchanged <file>
uratowałem moje życie .. OK, mógłbym ponownie zsynchronizować folder, ale chciałem „prawdziwego” rozwiązania tego problemu.Zakładam (heh) miałeś na myśli
--assume-unchanged
, ponieważ nie widzę żadnej--assume-changed
opcji. Odwrotnością--assume-unchanged
jest--no-assume-unchanged
.źródło
Aby zsyntetyzować doskonałe oryginalne odpowiedzi od @adardesign, @adswebwork i @AnkitVishwakarma oraz komentarze od @Bdoserror, @Retsam, @seanf i @torek, z dodatkowymi linkami do dokumentacji i zwięzłymi aliasami ...
Podstawowe polecenia
Aby zresetować plik, który nie został zmieniony z powrotem na normalny:
Aby wyświetlić listę wszystkich plików, które są niezmienione:
Aby zresetować wszystkie niezmienione pliki z powrotem do normalnego:
Uwaga: To polecenie, które zostało wymienione gdzie indziej, nie wydaje się już resetować wszystkich plików zakładanych bez zmian (myślę, że kiedyś to poprzedziło i jako rozwiązanie):
Skróty
Aby ułatwić wykonywanie tych typowych zadań w git, dodaj / zaktualizuj następującą sekcję aliasów
.gitconfig
dla swojego użytkownika (np. W~/.gitconfig
systemie * nix lub macOS):źródło
git hidden
możesz osiągnąć ten sam efekt bez aliasów powłoki i skryptów, używając w!
ten sposób:hidden = ! git ls-files -v | grep '^h' | cut -c3-
--really-refresh
nie usuwa (lub już nie usuwa, być może kiedyś to usunęło) flag zakładających niezmienione flagi w plikach indeksu.Jeśli chcesz cofnąć wszystkie zastosowane pliki, zakładając niezmienione, o dowolnym statusie, nie tylko buforowane (git zaznacza je znakami małymi literami), możesz użyć następującego polecenia:
git ls-files -v
wydrukuje wszystkie pliki z ich statusemgrep '^[a-z]'
będzie filtrować pliki i zaznaczać tylko zakładając niezmienionecut -c 3-
usunie status i pozostawi tylko ścieżki, odcinając od trzeciego znaku do końcatr '\012' '\000'
zamieni znak końca linii (\ 012) na zero (\ 000)xargs -0 git update-index --no-assume-unchanged
przejdzie wszystkie ścieżki oddzielone znakiem zero,git update-index --no-assume-unchanged
aby cofnąćźródło
Dodając do
@adardesign
odpowiedzi, jeśli chcesz zresetować wszystkie pliki, które zostały dodane doassume-unchanged
listy zano-assume-unchanged
jednym razem, możesz wykonać następujące czynności:Spowoduje to po prostu usunięcie dwóch znaków wyjściowych z grep, tj.
"h "
Następnie ucieczkę ze spacji, które mogą występować w nazwach plików, a na koniec|| true
zapobiegnie przedwczesnemu zakończeniu polecenia w przypadku, gdy niektóre pliki w pętli zawierają błędy.źródło
Jeśli używasz rozszerzeń Git , wykonaj następujące kroki:
Gotowe.
źródło
Nic tu nie jest objęte. Ale chciałbym dodać moje 2 centy. Czasami uruchamiam kompilację, która zmienia wiele plików, a potem chcę nad czymś popracować, więc to polecenie naprawdę mi bardzo pomaga.
git update-index --assume-unchanged `git status | grep modified | sed 's|modified:||g'| xargs`
Mam nadzieję, że ktoś inny uzna to za przydatne.
źródło
.gitignore
ignorowania artefaktów kompilacji..gitignore
ale to jest czasami, z mojego doświadczenia nie jest wystarczające. Ale rozumiem kontekst, w którym to mówisz.Żadne z rozwiązań nie działało dla mnie w systemie Windows - wydaje się, że używa ono kapitału,
H
a nieh
statusu pliku, a polecenie grep wymaga dodatkowej karetki, ponieważ^
reprezentuje także początek linii, a także neguje następny znak.Rozwiązanie Windows
git ls-files -v | grep '^^H'
aby wyświetlić listę wszystkich niebuforowanych plikówgit ls-files -v | grep '^^H' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-skip-worktree
aby cofnąć pomijanie wszystkich plików wykonanych za pomocąupdate-index --skip-worktree
git ls-files -v | grep '^^H]' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-assume-unchanged
aby cofnąć pomijanie wszystkich plików wykonanych za pomocąupdate-index --assume-unchanged
git ls-files -v | grep '^^H'
aby ponownie wyświetlić listę wszystkich niebuforowanych plików i sprawdzić, czy powyższe polecenia zadziałały - nie powinno to teraz niczego zwracaćźródło
Jeśli korzystasz z Eclipse, przydatne mogą być:
źródło