Tymczasowo wyśledzić pliki z git

450

Mam skonfigurowanego lokalnego git na moim komputerze. Kiedy zainicjowałem git, dodałem wstępnie skompilowane biblioteki lib i binarne. Jednak teraz, podczas opracowywania, nie chcę sporadycznie rejestrować tych plików. Nie chcę usuwać tych plików z repozytorium. Czy jest jakiś sposób, aby nie śledzić tych plików, dopóki nie ukończę programowania. (Myślę, że nie mogę użyć .gitignore, ponieważ działa tylko dla tych plików, które nie są w git. Chcę tymczasowo wyłączyć śledzenie plików.)

agent.smith
źródło

Odpowiedzi:

723

git update-index powinien robić, co chcesz

To powie git, że chcesz zacząć ignorować zmiany w pliku
git update-index --assume-unchanged path/to/file

Gdy chcesz ponownie zacząć śledzić
git update-index --no-assume-unchanged path/to/file

Dokumentacja Github: indeks aktualizacji

Andy
źródło
3
Wreszcie polecenie, które faktycznie działa dla mojego przypadkowo popełnionego pliku dev, dzięki :)
Richard de Wit
15
Dlaczego nie git rm -r --cached <plik>?
Ehsan
23
@Ehsan, jak się wydaje git rm --cached, doprowadzi do usunięcia lokalnych kopii na innych komputerach, na których ten sam oddział jest sprawdzany, przy następnym ściągnięciu. Zobacz arlocarreon.com/blog/git/…, a zwłaszcza dyskusję poniżej.
mit
3
Nie działa dla mnie, gdy wprowadzam zmiany w pliku, jest on nadal dodawany do uwzględnionych zmian. Mogę wykluczyć, ale w pewnym momencie prawdopodobnie zostanie dodany przypadkowo.
MrFox,
8
założenie, że niezmienione nie było przeznaczone do tego celu. Może chcę przeczytać ten wątek
Appy
264

możesz zachować swoje pliki bez śledzenia

git rm -r --cached <file>

dodaj swoje pliki za pomocą

git add -u

pchają lub robią, co chcesz.

cajuuh
źródło
19
To właściwie właściwa odpowiedź według: git-scm.com/book/en/v2/…
Ehsan
git rm --cached .DS_Store następnie drukuje rm '../.DS_Store'I plik lokalny jest usuwany ??! ( git version 2.6.4 (Apple Git-63))
Weishi Zeng
Tutaj znajdziesz odpowiedź stackoverflow.com/questions/6919121/…
Weishi Zeng
4
To nie jest poprawna odpowiedź, ponieważ spowoduje to usunięcie pliku ze źródła. OP chce zignorować lokalne zmiany tego pliku, a nie całkowicie usunąć jego śledzenie
cjsimon
2
UWAGA: usunie również pliki, które chcesz wyśledzić. Rozwiązaniem jest skopiowanie gdzieś wszystkich plików i skopiowanie ich z powrotem po zatwierdzeniu.
psad
111
git rm --cached

Jednak przede wszystkim nie powinieneś kompilować plików binarnych i zewnętrznych zależności. Zamiast tego użyj narzędzia takiego jak Bundler.

Tekkub
źródło
2
Nie zapomnij opcji -r (rekurencyjna) dla katalogów: git rm -r --cached
Anatoliy Shuba
36

Użyj następującego polecenia, aby wyśledzić pliki

git rm --cached <file path>
Dinesh Vaitage
źródło
7

Git-book wspomina o tym w sekcji 2.4: „Cofanie rzeczy”. Zasadniczo musisz przywrócić stan indeksu niektórych plików z powrotem do stanu HEAD, czyli do stanu ostatniego pobrania (lub zatwierdzenia). Spowoduje to cofnięcie przemieszczania pliku do bieżącego indeksu. Poleceniem dla tego zadania jest git reset. [1]

Tak więc polecenie, które musisz wykonać to:

git reset HEAD /path/to/file

Nowsze wersje git (wydaje mi się, że od wersji 1.6) dają to polecenie (i wiele innych) jako wskazówkę podczas wykonywania git status. Te wersje są bardzo przyjazne dla użytkownika. Osobista wskazówka: jeśli wystawiasz tylko kilka plików, użyjgit add -i . Spowoduje to uruchomienie interaktywnego narzędzia inscenizacji, które sprawia, że ​​jest to szczególnie łatwe. Również bardzo polecam przeczytanie książki, ponieważ jest ona bardzo wyraźna na temat używania git w praktycznych sytuacjach.

[1] http://www.git-scm.com/book

Eric Spreen
źródło
Zgadzam się, że git reset [file]jest to najprostszy sposób na wycofanie plików.
Spectral
18
Cofanie i rozpakowywanie to różne rzeczy
Jaime Sangcap,
6

Brak odpowiedzi na pierwotne pytanie. Ale to może komuś pomóc.

Aby zobaczyć dokonane zmiany ( wiedzieć, które pliki są oznaczone jako --assume-niezmienione )

git ls-files -v

Wynikowa lista plików będzie miała prefiks z jednym znakiem (np. H lub h) Jeśli jest to mała litera (tj. H), plik został oznaczony --assume-niezmieniony

główny
źródło
5

Zakładam, że pytasz, jak usunąć WSZYSTKIE pliki w folderze kompilacji lub folderze bin, zamiast wybierać poszczególne pliki osobno.

Możesz użyć tego polecenia:

git rm -r -f /build\*

Upewnij się, że znajdujesz się w katalogu nadrzędnym katalogu kompilacji.
To polecenie rekurencyjnie „usunie” wszystkie pliki znajdujące się w folderach bin / lub build /. Przez słowo „usuń” rozumiem, że git będzie udawał, że te pliki są „usuwane”, a te pliki nie będą śledzone. Git naprawdę zaznacza te pliki w trybie usuwania.

Upewnij się, że masz .gitignore gotowy na nadchodzące zmiany.
Dokumentacja: git rm

Vraj Pandya
źródło
1

git reset [plik]

Pobierz plik z obszaru przejściowego do katalogu roboczego

Często zapominam dodać moduły węzłów do pliku .gitignore, co rozwiązuje ten problem.

lordharbar
źródło
1

To zadziałało dla mnie

git reset HEAD „nazwa pliku”

Vivek
źródło
1

Aby usunąć wszystkie pliki Unrack. Wypróbuj to polecenie terminala

 git clean -fdx
divya d
źródło
Usunie pliki z dysku, a nie z historii git.
Leonardo
-1

aby usunąć nieśledzone pliki i foldery, ustaw git clean -fdx

Khadraoui Khairi
źródło