Ostrzeżenie: push.default jest rozbrojony; jego domyślna wartość zmienia się w Git 2.0

1623

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 simplei matching?

Jeśli zmienię to na jednym kliencie, czy będę musiał zrobić cokolwiek na innych klientach, którym udostępniam repozytoria?

Marko
źródło
1
Uwaga: git 2.8 (marzec 2016 r.) Usunie to ostrzeżenie! Zobacz stackoverflow.com/a/22356644/6309
VonC

Odpowiedzi:

2148

Jest to szczegółowo wyjaśnione w dokumentach , ale postaram się podsumować:

  • matchingoznacza, 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ś.

  • simpleoznacza, git pushże wypchnie tylko bieżącą gałąź do tej, z której git pullbę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ć .

hammar
źródło
16
Cieszę się, że znasz tę zmianę. Kiedy byłem nowy w Git, przypadkowo wypchnąłem wszystkie lokalne oddziały, myśląc, git pushże popchną tylko obecny oddział.
rahul286
51
Motyw jest taki, że empirycznie większość spodziewa się nowego domyślnego zachowania
Blake Miller
125
O wiele lepiej byłoby mieć swoje cudownie jasne podsumowanie w samym komunikacie ostrzegawczym, niż instrukcję nakazującą nam otwarcie dokumentacji i poszukiwanie łańcucha.
hertzsprung
116
„Wyjaśniono to bardzo wyraźnie w dokumentacji”. Jasne, że jeśli trafisz na właściwą stronę, to jednak instrukcja git push nawet nie wspomina o słowie „ proste” , prawdopodobnie dlatego, że tak wiele osób znalazło się tutaj .
Gerry
36
Podsumowanie Hammara jest znacznie bardziej zwięzłym wyjaśnieniem niż git docs.
AJ.
19

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 simplejest 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. matchingOpcja 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 --versionpokaże, git version 1.8.3.4 (Apple Git-47)czego nigdy nie widziałem, aż do aktualizacji systemu operacyjnego.

wgp
źródło
2
Zacząłem też to widzieć po aktualizacji do Mavericks. Myślę, że Git został zaktualizowany w tym samym czasie co Mavericks, tak jak sugerujesz.
Per Lundberg,
8

Jeśli otrzymasz wiadomość od git z narzekaniem na wartość simplew konfiguracji, sprawdź swoją git version.

Po aktualizacji XCode( Macdziałającej Mountain Lion), która również zaktualizowała się gitz 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ść simplepush.default w konfiguracji globalnej.

Rozwiązaniem było zamknięcie powłok uruchomionych w starej wersji giti użycie nowej wersji!

Tom Barron
źródło
13
Korzystam ze świeżej instalacji Xcode (git to wersja 1.8.5.2) i wciąż miałem ten błąd, dopóki nie uruchomiłem:git config --global push.default simple
Sam-Graham
2

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):

W trakcie przejścia około wersji Git 2.0 użytkownik uzyskiwał dość głośne ostrzeżenie podczas uruchamiania polecenia „git push” bez ustawiania zmiennej konfiguracyjnej push.default. Nie ostrzegamy już, ponieważ przejście zostało zakończone dawno temu.

Więc nie zobaczysz ostrzeżenia, jeśli masz Git 2.8 i nowsze wersje i nie musisz go ustawiać, push.defaultchyba że chcesz zmienić domyślne 'simple'zachowanie.

Eugene Yarmash
źródło