Używam Gita od jakiegoś czasu i niedawno pobrałem aktualizację, aby znaleźć ten komunikat ostrzegawczy, gdy próbuję push
.
warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:
git config --global push.default matching
To squelch this message and adopt the new behavior now, use:
git config --global push.default simple
Oczywiście mogę ustawić jedną z wymienionych wartości, ale co one oznaczają? Jaka jest różnica między simple
i matching
?
Jeśli zmienię to na jednym kliencie, czy będę musiał zrobić cokolwiek na innych klientach, którym udostępniam repozytoria?
git
version-control
git-push
Marko
źródło
źródło
Odpowiedzi:
Jest to szczegółowo wyjaśnione w dokumentach , ale postaram się podsumować:
matching
oznacza,git push
że wszystkie Twoje lokalne oddziały zostaną przeniesione do tych o tej samej nazwie na pilocie. Ułatwia to przypadkowe przesunięcie gałęzi, której nie zamierzałeś.simple
oznacza,git push
że wypchnie tylko bieżącą gałąź do tej, z którejgit pull
będzie pobierał , a także sprawdzi, czy ich nazwy pasują. Jest to bardziej intuicyjne zachowanie i dlatego zmienia się ustawienie domyślne.To ustawienie wpływa tylko na zachowanie lokalnego klienta i można je zastąpić, wyraźnie określając, które gałęzie chcesz przesłać w wierszu polecenia. Inni klienci mogą mieć różne ustawienia, wpływa to tylko na to, co się stanie, gdy nie określisz, które gałęzie chcesz przesłać .
źródło
git push
że popchną tylko obecny oddział.Zdaję sobie sprawę, że to stary post, ale ponieważ właśnie natknąłem się na ten sam problem i miałem problem ze znalezieniem odpowiedzi, pomyślałem, że dodam trochę.
Tak więc odpowiedź @ hammar jest poprawna. Używanie
push.default simple
jest w pewnym sensie konfiguracją śledzenia na gałęziach, więc nie musisz określać pilotów i gałęzi podczas pchania i ciągnięcia.matching
Opcja będzie naciskać wszystkie branże do odpowiadających im odpowiedników na domyślny zdalny (który jest pierwszym, który został utworzony, chyba że masz skonfigurowany repo inaczej).Jedną z rzeczy, które mam nadzieję, że inni okażą się przydatne w przyszłości, jest to, że korzystałem z Git 1.8 na OS X Mountain Lion i nigdy nie widziałem tego błędu. Aktualizacja do Mavericks jest tym, co nagle sprawiło, że się pojawił (uruchomienie
git --version
pokaże,git version 1.8.3.4 (Apple Git-47)
czego nigdy nie widziałem, aż do aktualizacji systemu operacyjnego.źródło
Jeśli otrzymasz wiadomość od git z narzekaniem na wartość
simple
w konfiguracji, sprawdź swojągit version
.Po aktualizacji
XCode
(Mac
działającejMountain Lion
), która również zaktualizowała sięgit
z wersji 1.7.4.4 do 1.8.3.4 , powłoki uruchomione przed aktualizacją wciąż działały na git 1.7.4.4 i narzekały na wartośćsimple
push.default w konfiguracji globalnej.Rozwiązaniem było zamknięcie powłok uruchomionych w starej wersji
git
i użycie nowej wersji!źródło
git config --global push.default simple
Zastanawiałem się, dlaczego otrzymałem ten duży komunikat ostrzegawczy na Ubuntu 16.04 (który jest dostarczany z Git 2.7.4), ale nie na Arch Linux. Powodem jest to, że ostrzeżenie zostało usunięte w Git 2.8 (marzec 2016):
Więc nie zobaczysz ostrzeżenia, jeśli masz Git 2.8 i nowsze wersje i nie musisz go ustawiać,
push.default
chyba że chcesz zmienić domyślne'simple'
zachowanie.źródło