Nie zapominaj, zgodnie z gitignore , że istnieje kolejność pierwszeństwa w różnych „ignorowanych źródłach wzorców”, które rozważa Git:
- Wzorce odczytywane z wiersza poleceń dla tych poleceń, które je obsługują.
- Wzorce odczytywane z pliku .gitignore w tym samym katalogu, co ścieżka lub w dowolnym katalogu nadrzędnym, przy czym wzorce w plikach wyższego poziomu (do katalogu głównego) są zastępowane przez te z plików niższego poziomu, aż do katalogu zawierającego plik.
- Wzory czytane z
$GIT_DIR/info/exclude
.
- Wzorce odczytywane z pliku określonego przez zmienną konfiguracyjną
core.excludesfile
.
Dwie ostatnie mogą być rozwiązaniem Twojego problemu, ale:
- nie są replikowane do odległego repozytorium
- mogą mieć nadpisane wzorce przez inne źródła
(Zobacz także to pytanie SO )
Pozostałe dwa rozwiązania obejmują aktualizację index ( git update-index
):
Jednak gdy wyewidencjonujesz inną gałąź lub gdy ty git pull
, ten status „ignoruj” może zostać zresetowany. Stąd inna opcja:
git update-index --skip-worktree
; widzieć:
Różnica między nimi jest wyjaśniona w sekcji „ Git - różnica między ' assume-unchanged
' a ' skip-worktree
' ”.
update-index --assume-unchanged
@see stackoverflow.com/a/25253144/292408update-index --skip-work-tree
. Jave zredagowałem odpowiedź, dodając kilka linków do moich starych odpowiedzi, ilustrujących te dwaupdate-index
polecenia.Jeśli możesz modyfikować
.git/info/exclude
, możesz umieścić tam te same reguły. Ale ten plik znajduje się tylko w lokalnym repozytorium.źródło
.git
katalogu w.git
folder podrzędny znajduje się w rzeczywistościparent_repo/.git/modules/submodule_name
. Więc zredagowałbyśparent_repo/.git/modules/submodule_name/info/exclude
Istnieją trzy sposoby na poinformowanie GIT, które pliki mają ignorować:
.gitignore
akta$GIT_DIR/.git/info/exclude
core.excludesfile
ustawienieTe dwa ostatnie punkty mogą rozwiązać twój problem.
Więcej informacji można znaleźć w gitignore (5) .
źródło
Ignoruj lokalne zmiany w śledzonych plikach:
git update-index --assume-unchanged my-file.php
Nie ignoruj lokalnych zmian w śledzonych plikach:
git update-index --no-assume-unchanged my-file.php
źródło:
git help update-index
źródło
Jeśli chcesz mieć tylko kilka plików lokalnych w repozytorium, a lokalizacja podkatalogu jest elastyczna, możesz umieścić swoje pliki,
tracked_dir1/tracked_dir2/untracked_dir/
a następnie dodaćtracked_dir1/tracked_dir2/untracked_dir/.gitignore
zawartość taką jak:*
To znaczy
źródło
Byłem w podobnych sytuacjach, więc dodaję moje preferowane rozwiązanie, o którym nie wspomniałem. Problem
git update-index --assume-unchanged
w tym przypadku polega na tym, że nie można tego zrobić dla nieśledzonego pliku. PowiedziałeśZakładam, że masz na myśli to, że nie możesz wprowadzić żadnych zmian
.gitignore
do źródła. W takim przypadku możesz dodać nieśledzony plik do swojego lokalnego.gitignore
, a następnie zróbgit update-index --assume-unchanged .gitignore
tak, aby zmiana na.gitignore
nigdy nie została wypchnięta. Teraz ignorujesz (prawdopodobnie) nieśledzony plik i nie masz wpływu na.gitignore
plik zdalny .źródło
Inny sposób:
.gitignore
git update-index --assume-unchanged .gitignore
źródło
Możesz użyć globalnej metody gitignore zamiast modyfikować tę w projekcie https://help.github.com/articles/ignoring-files/#create-a-global-gitignore
źródło