Ignoruj pliki, które zostały już przekazane do repozytorium Git [duplikat]
To pytanie ma już odpowiedź tutaj:
- Jak sprawić, by Git "zapomniał" o pliku, który był śledzony, ale jest w nim .gitignore? 20 odpowiedzi
Mam już zainicjowane repozytorium Git, do którego dodałem plik .gitignore
. Jak odświeżyć indeks plików, aby ignorowane pliki były ignorowane?
21 answers
Aby usunąć pojedynczy plik, który został już dodany/zainicjowany do repozytorium, tj., przestań śledzić plik, ale nie usuwaj go z systemu Użyj: git rm --cached filename
Aby usunąć każdy plik, który jest teraz w twoim .gitignore
:
Najpierw Zatwierdź wszelkie zaległe zmiany kodu , a następnie uruchom polecenie:
git rm -r --cached .
Usuwa zmienione pliki z indeksu (staging area), a następnie uruchom:
git add .
Commit it:
git commit -m ".gitignore is now working"
Aby cofnąć git rm --cached filename
, Użyj git add filename
.
Upewnij się, że zatwierdzisz wszystkie ważne zmiany przed uruchomieniem
git add .
W przeciwnym razie utracisz wszelkie zmiany w innych plikach.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-16 23:48:27
Jeśli próbujesz zignorować zmiany w pliku, który jest już śledzony w repozytorium (np. dev.Plik Właściwości, który trzeba by zmienić w środowisku lokalnym, ale nigdy nie chcesz sprawdzać tych zmian), niż to, co chcesz zrobić, to:
git update-index --assume-unchanged <file>
Jeśli chcesz zacząć od nowa śledzić zmiany
git update-index --no-assume-unchanged <file>
Zobacz strona podręcznika Git-update-index(1) .
Spójrz również na opcje skip-worktree
i no-skip-worktree
dla update-index, jeśli potrzebujesz tego persist past a Git-reset (via)
Update: Ponieważ ludzie pytają, oto wygodny (i zaktualizowany od komentarza poniżej) alias, aby zobaczyć, które pliki są obecnie " ignorowane "(--assume-niezmienione) w lokalnym obszarze roboczym
$ git config --global alias.ignored = !git ls-files -v | grep "^[[:lower:]]"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:59
Aby odznaczyć plik, który został już dodany/zainicjowany do repozytorium, tj. przestać śledzić plik, ale nie usunąć go z systemu, Użyj: git rm --cached filename
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-14 23:55:15
Yes - .gitignore
system ignoruje tylko pliki, które nie są aktualnie kontrolowane przez git.
Tzn. jeśli dodałeś już plik o nazwie test.txt
używając git-add
, dodanie test.txt
do .gitignore
nadal spowoduje śledzenie zmian w test.txt
.
Musisz najpierw git rm test.txt
I zatwierdzić tę zmianę. Tylko wtedy zmiany test.txt
zostaną zignorowane.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-02 17:44:37
Usuń końcowe białe znaki .gitignore
Upewnij się również, że nie masz końcowych białych znaków w swoim .gitignore. Dotarłem do tego pytania, ponieważ szukałem odpowiedzi, a potem miałem dziwne uczucie, że powinienem otworzyć edytor zamiast po prostu kotować .gitignore. Usunąłem jedną dodatkową spację z końca i poof działa teraz:)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-02 15:59:49
Wykonałem te kroki
git rm -r --cached .
git add .
git reset HEAD
Po tym, git usuwa wszystkie pliki (*.swp w moim przypadku), które powinny być ignorowane.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-15 07:22:58
Jeśli chcesz zatrzymać śledzenie pliku bez usuwania pliku z lokalnego systemu, który wolę ignorować plik config/database.yml
. Po prostu spróbuj:
git rm --cached config/database.yml
# this will delete your file from git history but not from your local system.
Teraz dodaj ten plik do .gitignore
i zatwierdź zmiany. I od teraz wszelkie zmiany wprowadzone w config / database.yml nie będzie śledzony przez git.
$ echo config/database.yml >> .gitignore
Dzięki
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-17 04:01:12
Aby usunąć tylko kilka konkretnych plików ze śledzonych:
git update-index --assume-unchanged path/to/file
Jeśli kiedykolwiek chcesz zacząć go śledzić ponownie:
git update-index --no-assume-unchanged path/to/file
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-23 15:27:13
Jak mówi dav_i, aby zachować plik w repo, a jednocześnie usunąć go ze zmian bez tworzenia dodatkowego commita, możesz użyć:
git update-index --assume-unchanged filename
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-17 07:21:44
Złożone odpowiedzi wszędzie!
Po prostu użyj następującego
git rm -r --cached .
Usunie pliki, które próbujesz zignorować z origin, a nie z master na komputerze!
Potem po prostu zaangażuj się i pchaj!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-19 05:38:19
Nie wiedząc do końca, co zrobiła Komenda "odpowiedz", uruchomiłem ją, ku mojemu przerażeniu. Rekurencyjnie usuwa każdy plik z twojego repo git.
Stackoverflow na ratunek... Jak przywrócić " git rm-r ."?git reset HEAD
Udało mi się, ponieważ miałem niezakontraktowane pliki lokalne, których nie chciałem nadpisywać.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:43
Jest jeszcze jedna sugestia może dla takich wolnych facetów jak ja=) Wrzuć .gitignore plik do głównego repozytorium nie w .Git folder. Zdrowie!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-27 12:03:53
Żadna z odpowiedzi nie zadziałała.
Zamiast:
- Przenieś plik z katalogu kontrolowanego przez git
- Sprawdź usunięcie w git
- Przenieś plik z powrotem do katalogu kontrolowanego przez git
Po przeniesieniu pliku z powrotem, git zignoruje go.
Działa również z katalogami!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-17 16:23:56
Kolejnym problemem, jaki miałem, było umieszczenie komentarza w linii.
tmp/* # ignore my tmp folder (this doesn't work)
To działa
# ignore my tmp folder
tmp/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-06 13:14:59
Jeśli pliki są już w kontroli wersji, musisz je usunąć ręcznie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-16 19:28:57
Dzięki twojej odpowiedzi, udało mi się napisać ten mały jednoślad, aby go poprawić. Sprawdziłem to na moim .gitignore i repo, i nie miał żadnych problemów, ale jeśli ktoś widzi jakieś rażące problemy, proszę o komentarz. To powinno git rm -r --cached
z .gitignore
:
Cat $(git rev-parse --show-toplevel)/.gitIgnore | sed" s//$ | | "| grep-v "^ # "/ xargs-L 1-I {} find $(git rev-parse --show-toplevel) -name "{} " / xargs-L 1 git rm-r --cached
Zauważ, że dostaniesz dużo fatal: pathspec '<pathspec>' did not match any files
. To tylko dla plików, które nie zostały zmodyfikowane.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-29 15:00:33
Znalazłem dziwny problem z .gitignore. Wszystko było na swoim miejscu i wydawało się prawidłowe. Jedyny powód, dla którego mój .gitignore był "ignorowany", że końcówka linii była w formacie Mac (\r). Więc po zapisaniu pliku z poprawnym zakończeniem linii (w vi używając :set FF = unix) wszystko działało jak czar!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-02 09:56:39
Innym problemem nie wspomnianym tutaj jest to, czy stworzyłeś swój .gitignore w Notatniku Windows może wyglądać jak bełkot na innych platformach, jak się dowiedziałem. Kluczem jest upewnienie się, że kodowanie jest ustawione na ANSI w notatniku, (lub zrobić plik na Linuksie tak, jak ja).
Z mojej odpowiedzi tutaj: https://stackoverflow.com/a/11451916/406592
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:39
Na moim serwerze linux server (nie jest to prawda na moim lokalnym dev mac), katalogi są ignorowane tak długo, jak nie dodam gwiazdki:
Www / archives/ *
Nie wiem dlaczego, ale przez to straciłem kilka godzin, więc chciałem się podzielić...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-15 08:33:19
Należy również pamiętać o tym, że jeśli .gitignore
nie ignoruje nie śledzonych plików, nie należy dodawać komentarzy w tej samej linii, co ignorowane pliki. Więc to jest w porządku
# ignore all foo.txt, foo.markdown, foo.dat, etc.
foo*
Ale to nie zadziała:
foo* # ignore all foo.txt, foo.markdown, foo.dat, etc.
.gitignore
interpretuje ten drugi przypadek jako " ignoruj pliki o nazwie "foo* # ignore all foo.txt, foo.markdown, foo.dat, etc."
, których oczywiście nie masz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-19 22:52:59
Jeśli chcesz przestać śledzić wiele ignorowanych plików, możesz połączyć kilka poleceń:
git ls-files -i --exclude-standard | xargs -L1 git rm --cached
To przestanie śledzić ignorowane pliki. Jeśli chcesz usunąć Pliki z systemu plików, nie używaj opcji --cached
. Możesz również określić folder, aby ograniczyć wyszukiwanie, na przykład:
git ls-files -i --exclude-standard -- ${FOLDER} | xargs -L1 git rm
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-20 06:18:57