Otrzymałem wiadomość od Gita:
Poprosiłeś o ściągnięcie ze zdalnego „źródła”, ale nie określiłeś gałęzi. Ponieważ nie jest to domyślna konfiguracja zdalna dla bieżącej gałęzi, należy określić gałąź w wierszu poleceń.
Czy ktoś może to wyjaśnić? i co ważniejsze, jak to naprawić?
git pull
ściąga i łączy się z bieżącą gałęzią, więc jej zachowanie całkowicie zależy od tego, która gałąź jest wyewidencjonowana, a przy odłączonej gałęzi HEAD (brak wyewidencjonowanej gałęzi) nie ma możliwości, aby wiedzieć, którą gałąź wyciągnąć.Aby to naprawić, zakładając, że jesteś w
master
gałęzi i chcesz pobraćmaster
gałąź zeorigin
zdalnego, w wystarczająco nowych wersjach Git (1.8 lub nowszych):(Analogicznie dla innych oddziałów i / lub pilotów.)
Jeśli możesz to połączyć z pchnięciem, jest jeszcze krócej:
Następnie zwykły
git pull
/git push
zrobi to, czego oczekujesz.Podczas serii Git 1.7
git branch
nie miał-u
przełącznika (tylkogit push
miał), a zamiast tego trzeba było używać znacznie dłużej--set-upstream
:Zwróć uwagę na odwrócenie argumentów w porównaniu z
-u
. Nieraz grzebałem w tym zamówieniu.Nawiasem mówiąc, wszystko to jest skrótem do wykonywania następujących czynności, które nadal możesz zrobić jawnie:
Przed 1.7 trzeba było to robić w ten sposób.
źródło
git branch --set-upstream master origin/master
-u
opcja ta nie jest udokumentowanagit branch
w mojej wersji 1.8.5.3, co sprawia, że wasza dokumentacja jest tutaj jeszcze ważniejsza. Jak zauważyłeś, opcja była niedostępna w wersji 1.7. *. Ponieważ-u
jest skrótem od--set-upstream
, czy kolejność jego argumentów nie powinna być odwrócona, tak jak to zrobiłeś z--set-upstream
powodu komentarza @ EvanDonovan?git branch -u origin/master master
), działa ono zgodnie z oczekiwaniami / przeznaczeniem dla mnie: „Branch master skonfigurowany do śledzenia zdalnego branch mastera z początku”.-u
Przełącznik jest faktycznie nie krótka forma--set-upstream
. Jego kolejność argumentów jest skutecznie odwrócona od kolejności dla--set-upstream
. Myślę, że dopiero później--set-upstream-to
(zwróć uwagę na „-to”) zostało wprowadzone, co-u
jest teraz właściwie krótką formą.Wiadomość mówi dokładnie o czym jest. Twoja obecna gałąź nie jest powiązana z żadnym oddziałem pochodzenia (nie śledzi) . Więc git nie wie, co ciągnąć.
Co robić? To zależy...
W większości sytuacji pracujesz z lokalną gałęzią xyz, która rozgałęzia się od mastera sklonowanego z mastera pochodzenia . Zwykłym sposobem rozwiązania tego problemu jest przełączenie się na master i pociągnięcie, aby zsynchronizować go z początkiem, a następnie powrót do xyz i
rebase master
.Ale w swojej sytuacji możesz chcieć zrobić coś innego. Nie możemy tego wiedzieć, nie znając szczegółów twoich oddziałów i pilotów oraz tego, jak zamierzasz z nich korzystać.
źródło