Odpowiedzi:
Zaletą .gitignore
jest to, że w przeciwieństwie do plików można go sprawdzić w samym repozytorium .git/info/exclude
. Inną zaletą jest to, że możesz mieć wiele .gitignore
plików, po jednym w każdym katalogu / podkatalogu dla specyficznych dla katalogu reguł ignorowania, w przeciwieństwie do .git/info/exclude
.
Tak więc .gitignore
jest dostępny we wszystkich klonach repozytorium. Dlatego w dużych zespołach wszyscy ludzie ignorują ten sam rodzaj plików przykładu *.db
, *.log
. Możesz mieć bardziej szczegółowe reguły ignorowania z powodu wielu .gitignore
.
.git/info/exclude
jest dostępny tylko dla pojedynczych klonów, dlatego to, co jedna osoba ignoruje w swoim klonie, nie jest dostępne w klonie innej osoby. Na przykład, jeśli ktoś używa Eclipse
do programowania, może mieć sens, aby ten programista dodał .build
folder do.git/info/exclude
ponieważ inni deweloperzy mogą nie używać Eclipse.
Ogólnie rzecz biorąc, reguły files / ignore, które muszą być uniwersalnie ignorowane, powinny wejść .gitignore
, a w przeciwnym razie pliki, które chcesz zignorować tylko w swoim lokalnym klonie, powinny wejść do.git/info/exclude
~/.gitignore
w Twoim komentarzu powyżej. Rozumiem, że reguły ignorowania mogą być na 3 poziomach - $PROJECT/.git/info/exclude
dla (projektu, użytkownika) specyficznych reguł ignorowania, $PROJECT/<any number of directories>/.gitignore
czyli dla specyficznych dla projektu reguł ignorowania dla dowolnego użytkownika w dowolnym miejscu (po wpisaniu), ~/.gitignore
dla specyficznych dla użytkownika reguł ignorowania dla dowolnego projektu dla tego użytkownika na tej maszynie. Na podstawie celu wybierasz miejsce, w którym chcesz umieścić wpis.
git rm --cached <path-name>
usunie ją z repozytorium, ale zachowa lokalnie. git update-index --skip-worktree <path-name>
zignoruje zmiany w pliku, ale zachowa go w repozytorium. Z ciekawości: dlaczego chcesz wykluczyć plik sln? To ważna część rozwiązania .Net, prawda?
Googled: 3 sposoby wykluczania plików
.gitignore
dotyczy każdego klonu tego repozytorium (wersjonowane, każdy będzie miał),.git/info/exclude
dotyczy tylko Twojej lokalnej kopii tego repozytorium (lokalnej, nie udostępnianej innym),~/.gitignore
dotyczy wszystkich repozytoriów na Twoim komputerze (lokalnych, nie udostępnianych innym).3.
w rzeczywistości wymaga ustawienia konfiguracji na komputerze:
git config --global core.excludesfile '~/.gitignore'
.git/info/excludes
, kiedy powinien .git/info/exclude
, co potwierdza dokumentacja, do której prowadzi.
Aby zaoferować nasze (rzeczywiste) doświadczenie: zaczęliśmy używać .git / info / exclude, kiedy musieliśmy dostosować niektóre pliki konfiguracyjne w każdym środowisku programistycznym, ale nadal chcieliśmy, aby źródło było utrzymywane w repozytorium i dostępne dla innych programistów.
W ten sposób pliki lokalne, po sklonowaniu i zmodyfikowaniu, można wykluczyć z zatwierdzeń bez wpływu na oryginalne pliki w repozytorium, ale niekoniecznie są również ignorowane w repozytorium.
Służy .gitignore
do ignorowania reguł specyficznych dla projektu . Użyj exclude
lub globalnego pliku ignorowania, aby ignorować reguły specyficzne dla twojego środowiska .
Na przykład moje globalne pliki ignorowania ignorują pliki tymczasowe generowane przez dowolny edytor, którego używam - ta reguła jest specyficzna dla mojego środowiska i może być inna dla innego programisty w tym samym projekcie (być może używają oni innego edytora). OTOH, moje .gitignore
pliki projektu ignorują takie rzeczy, jak klucze API i artefakty kompilacji - te są przeznaczone dla projektu i powinny być takie same dla wszystkich w projekcie.
To pomaga?