Czy mogę powiedzieć gitowi, aby zignorował pliki, które zostały zmodyfikowane (usunięte), ale nie należy ich zatwierdzać?
Sytuacja polega na tym, że mam repozytorium w repozytorium, które zawiera rzeczy, które w ogóle mnie nie interesują, więc usunąłem go, aby nie pojawiał się w autouzupełnianiu itp. (W IDE).
Ale teraz, jeśli dodam ten folder do .gitignore, po prostu nic się nie zmieni, wszystkie rzeczy zostaną pokazane jako usunięte według statusu git.
Czy istnieje sposób, aby git zignorował to w obu przypadkach?
(Alternatywnie, gdy używam git-svn, czy mogę zatwierdzić zmiany w lokalnym git i upewnić się, że nie są one przekazywane do repozytorium svn?)
Odpowiedzi:
sprawdź stronę podręcznika git-update-index i bit --assume-niezmieniony i powiązane.
kiedy mam twój problem, robię to
lub określony plik
źródło
git update-index --no-assume-unchanged config/database.yml
--assume-unchanged
.Nowszą i lepszą opcją jest,
git update-index --skip-worktree
która nie zostanie utracona podczas twardego resetu lub nowej zmiany po pociągnięciu.Zobacz stronę podręcznika pod adresem http://schacon.github.com/git/git-update-index.html
I porównanie na http://fallengamer.livejournal.com/93321.html
źródło
skip-worktree
znalezienie tych plików jest nieco kłopotliwe. Jedyny znany mi sposób togit ls-files -v |grep -v '^H'
. Ponadto wiele narzędzi GUI nie wie o tej funkcji i może powodować zabawne błędy, jeśli np.checkout
Zawiedzie z powodu „ukrytych” zmodyfikowanych plików.Użyj tego kodu
źródło
Śledzonych plików nie można zignorować, dlatego najpierw trzeba je usunąć z indeksu. Dodaj,
.gitignore
który ignoruje katalogi, których nie chcesz, a następnie usuń je i usuń maruderówgit rm --cached
.źródło
Zwykle robię to
źródło