Kiedyś (myślę, że w okolicach wersji 1.6.x) git stał się świadomy zmian w podmodułach. To tylko mnie denerwuje:
Dostawca statusu $ git | grep zmodyfikowano: # modified: vendor / rails (zmodyfikowana zawartość)
$ git diff sprzedawca / diff --git a / vendor / rails b / vendor / rails --- a / vendor / rails +++ b / vendor / rails @@ -1 +1 @@ -Zobowiązanie podprojektu 046c900df27994d454b7f906caa0e4226bb42b6f + Zobowiązanie podprojektu 046c900df27994d454b7f906caa0e4226bb42b6f-brudne
Proszę, zatrzymaj to?
Edytować:
Ok, więc mam odpowiedź. Teraz mam kolejne pytanie:
Mogę to włożyć ~/.gitconfig
? Z mojego inicjału wynika, że nie mogę i nie widziałem nic obiecującego, przeglądając łatkę. (Myślę, że nadal mogę utworzyć alias.)
Odpowiedzi:
Istnieje nawet możliwość ustawienia trybu ignorowania dla każdego dodanego modułu podrzędnego w pliku .gitmodules.
Właśnie dzisiaj napotkałem ten problem i od razu napisałem artykuł na swoim blogu po znalezieniu rozwiązania: Jak ignorować zmiany w podmodułach git
Istota tego:
Po prostu dodaj jedną linię do tego
.gitmodules
pliku:źródło
git status
zadziałał zgodnie z oczekiwaniami. Wydaje mi się, że potrzebujesz przynajmniej wersji 1.7.4 lub lepszej..gitignore
pliku istnieje wersja prywatna o nazwieexclude
, zlokalizowana w.git/info/
, która nie jest obsługiwana. Czy istnieje odpowiedni plik dla tego.gitmodules
pliku, który pozwoli Ci na wstrzymanie zmian w module podrzędnym tylko w Twojej instancji repozytorium nadrzędnego, bez wprowadzania zmian w.gitmodules
?Istnieją dwa rodzaje powiadomień o zmianach, które można ukryć.
Pierwsza to
untracked content
sytuacja, w której wprowadzisz zmiany w module podrzędnym, ale jeszcze ich nie zatwierdziłeś. Repozytorium nadrzędne zauważa to i odpowiedniogit status
raportuje:modified: modules/media (untracked content)
Możesz je stłumić za pomocą:
Jednak po zatwierdzeniu tych zmian repozytorium nadrzędne ponownie zwróci uwagę i odpowiednio je zgłosi:
Jeśli chcesz je również ukryć, musisz zignorować
all
zmianyźródło
.gitignore
pliku istnieje wersja prywatna o nazwieexclude
, zlokalizowana w.git/info/
, która nie jest obsługiwana. Czy istnieje odpowiedni plik dla tego.gitmodules
pliku, który pozwoli Ci na wstrzymanie zmian w module podrzędnym tylko w Twojej instancji repozytorium nadrzędnego, bez wprowadzania zmian w.gitmodules
?ignore = all
Część jest przydatna.Aktualizacja: See (i upvote) nilshaldenwang „s odpowiedź odnośnie do możliwości, aby dodać do
.gitmodules
pliku parametr konfiguracyjny za ignorowanie stan zanieczyszczenia danym modułem.Więc git 1.7.2 jest niedostępny i zawiera
--ignore-submodules
opcję dlastatus
.Od
git help status
:Wartość, której chcę, to
dirty
.Używam aliasu, ponieważ jestem leniwy:
źródło
ignore=dirty
do poszczególnych wpisów w.gitmodules
pliku.Jak wspomniałeś, podmoduł łatki git: ignoruj brudne moduły podrzędne dla podsumowania i statusu jest w trakcie tworzenia.
Ogłoszono również w wydaniu Git 1.7.2-rc2 :
Znaczenie:
Uznanie tego jako opcji nie jest dokładnie podejściem wybranym na razie :
„
git diff
” i „git status
” użyją tej wartości konfiguracyjnej dla każdego modułu podrzędnego.Użycie „
--ignore-submodule
” nadpisuje to domyślne (a nowy parametr „none” zostanie tam dodany, aby móc nadpisać ustawienia konfiguracyjne).Inne podejście do nadania statusu git (lub dowolnego polecenia git) ignorowania określonego modułu podrzędnego jest dostępne w Git 2.13 (Q2 2017):
Zobacz więcej w „ Ignoruj nowe zatwierdzenia dla modułu podrzędnego git ”.
źródło
ignore = dirty
"Możesz także użyć
ustawić
submodule.ignore = dirty
w.git/config
pliku.--global
ustawi flagę ignorowania w twoim~/.gitconfig
i zastosuje do wszystkich twoich repozytoriów. Bez tego powinno się ustawić.git/config
tylko dla repozytorium, w którym aktualnie jesteś.Jedyną dokumentacją, jaką mogę znaleźć na ten temat, jest
submodule.<name>.ignore
dokumentacja git-config . Przeniosłem go z pliku .gitmodules do mojego ~ / .gitconfig i nadal działa.źródło
Musisz dodać
do .gitmodules
źródło
Więc git v1.7.2-rc2 ma to, czego chcę:
Tworzenie własnego git howto:
źródło
git clone git://git.kernel.org/pub/scm/git/git.git git
.Odpowiedziałem tutaj bardziej szczegółowo na to pytanie .
Po prostu biegnij
aby dodać opcję konfiguracji lokalnej, aby zignorować te zmiany.
źródło
Może nie chcieć, aby dodać
ignore = dirty
do.gitmodules
, może chcesz być bardziej selektywny o zmianach Państwo chcieli zignorować.Aby to zrobić, dodaj wzorce do
.git/submodule_foo/bar/info/exclude
, gdziesubmodule_foo/bar/
jest ścieżką do podmodułu.Wzorce są podobne do wzorców, do których można by dodać
.gitignore
, z katalogiem głównym jest katalog podmodułów. Na przykład ten wzorzec ignorujebuild
katalog w module podrzędnymsubmodule_foo/bar/
:źródło