Każdy programista w moim zespole ma własną konfigurację lokalną. Te informacje o konfiguracji są przechowywane w pliku o nazwie, devtargets.rb
który jest używany w naszych zadaniach kompilacji prowizji. Nie chcę jednak, aby programiści blokowali nawzajem swój plik devtargets.
Moją pierwszą myślą było umieszczenie tego pliku na .gitignore
liście, aby nie był zaangażowany w git.
Potem zacząłem się zastanawiać: czy można zatwierdzić plik, ale zignorować zmiany w pliku? Zatwierdziłbym więc domyślną wersję pliku, a następnie gdy programista zmieniłby ją na swoim komputerze lokalnym, git zignorowałby zmiany i nie pojawiłby się na liście zmienionych plików, gdy wykonujesz status git lub git commit .
Czy to jest możliwe? Na pewno byłaby to miła funkcja ...
Odpowiedzi:
Jasne, robię to od czasu do czasu za pomocą
Aby cofnąć i ponownie rozpocząć śledzenie (jeśli zapomniałeś, które pliki nie były śledzone, zobacz to pytanie ):
Odpowiednia dokumentacja :
Niepowodzenie z wdziękiem w tym przypadku oznacza, że jeśli są jakieś zmiany w górę do tego pliku (uzasadnione zmiany itp.), Gdy wykonasz ściąganie, powie:
i odmówi połączenia.
W tym momencie możesz temu zaradzić, cofając lokalne zmiany, oto jeden ze sposobów:
następnie pociągnij ponownie i ponownie zmodyfikuj plik lokalny lub
–no-assume-unchanged
możesz ustawić, a następnie możesz wykonać normalne ukrywanie i scalanie itp.źródło
git update-index --assume-unchanged
jest. public-inbox.org/git/…Preferowanym sposobem na to jest użycie
git update-index --skip-worktree <file>
, jak wyjaśniono w tej odpowiedzi :Aby cofnąć to, użyj
git update-index --no-skip-worktree <file>
Od wersji git 2.25.1 nie jest to już zalecany sposób, cytując:
źródło
git update-index --skip-worktree
do tego celu.Wydaje się, że powszechną praktyką jest tworzenie
devtargets.default.rb
i zatwierdzanie go, a następnie instruowanie każdego użytkownika, aby skopiował ten plikdevtargets.rb
(który znajduje się na liście .gitignore). Na przykład CakePHP robi to samo dla pliku konfiguracyjnego bazy danych, który naturalnie zmienia się z maszyny na maszynę.źródło
--assume-unchanged
opcji dla wszystkich, którzy klonują repozytorium.devtargets.default.rb
jeślidevtargets.rb
nie istnieje.Dla użytkowników IntelliJ IDEA: jeśli chcesz zignorować zmiany pliku (lub plików), możesz przenieść je do innego
Change Set
.Local Changes
(Cmd + 9
)F6
aby przenieść je do innegoChange Set
źródło