Co to znaczy
Twój nadrzędny - pilot, do którego dzwonisz origin- nie ma już, a może nigdy nie miał (nie można stwierdzić na podstawie samych informacji) oddziału o nazwie feature/Sprint4/ABC-123-Branch. Jest jeden szczególnie częsty powód: ktoś (prawdopodobnie nie ty, albo pamiętasz) usunął gałąź w innym repozytorium Git.
Co robić
To zależy od tego, czego chcesz . Zobacz sekcję dyskusji poniżej. Możesz:
- utwórz lub ponownie utwórz gałąź na pilocie, lub
- usuń lokalny oddział lub
- wszystko inne, o czym możesz pomyśleć.
Dyskusja
Musisz działać git pull(jeśli był uruchomiony git merge, pojawił się inny komunikat o błędzie lub komunikat o błędzie w ogóle).
Po uruchomieniu git fetchTwój Git kontaktuje się z innym Gitem na podstawie urllinii pod [remote "origin"]sekcją konfiguracji. Że Git wykonuje polecenie ( upload-pack), która, między innymi, wysyła swój git listę wszystkich oddziałów. Możesz użyć, git ls-remoteaby zobaczyć, jak to działa (spróbuj, to jest edukacyjne). Oto fragment tego, co otrzymuję, uruchamiając go w repozytorium Git dla gitsiebie:
$ git ls-remote origin
From [url]
bbc61680168542cf6fd3ae637bde395c73b76f0f HEAD
60115f54bda3a127ed3cc8ffc6ab6c771cbceb1b refs/heads/maint
bbc61680168542cf6fd3ae637bde395c73b76f0f refs/heads/master
5ace31314f460db9aef2f1e2e1bd58016b1541f1 refs/heads/next
9e085c5399f8c1883cc8cdf175b107a4959d8fa6 refs/heads/pu
dd9985bd6dca5602cb461c4b4987466fa2f31638 refs/heads/todo
[snip]
Do refs/heads/listy wpisy wszystkich oddziałów, które istnieją na pilocie, 1 wraz z odpowiednimi popełnić identyfikatory (na refs/tags/wpisach identyfikatory mogą wskazywać na tagu obiektów zamiast zobowiązuje).
Twój Git bierze każdą z tych nazw gałęzi i zmienia ją zgodnie z fetchwierszami w tej samej remotesekcji. W tym przypadku, twój Git zastępuje refs/heads/mastersię refs/remotes/origin/master, na przykład. Twój Git robi to z każdą napotkaną nazwą oddziału.
Zapisuje również oryginalne nazwy w specjalnym pliku FETCH_HEAD(możesz zobaczyć ten plik, jeśli zajrzysz do własnego .gitkatalogu). Ten plik zapisuje pobrane nazwy i identyfikatory.
git pullKomenda służy jako skrót wygoda: to działa git fetchna odpowiednim pilocie, a następnie git merge(lub, jeśli tak polecił, git rebase) o cokolwiek argumenty są potrzebne do scalenia (lub rebase) zgodnie z zaleceniami [branch ...]sekcji. W takim przypadku [branch "feature/Sprint4/ABC-123-Branch"]sekcja zawiera polecenie pobierania origin, a następnie scalania z dowolnym identyfikatorem znalezionym pod nazwą refs/heads/feature/Sprint4/ABC-123-Branch.
Ponieważ nic nie znaleziono pod tą nazwą, git pullnarzeka i przestaje.
Jeśli uruchomisz to jako dwa osobne kroki, git fetcha następnie git merge(lub git rebase), Twój Git spojrzy na twoje buforowane remotes/origin/gałęzie zdalnego śledzenia, aby zobaczyć, z czym się połączy lub na czym bazuje. Jeśli tam był taki oddział w tym samym czasie, można jeszcze oddział zdalnego śledzenia. W takim przypadku nie pojawi się komunikat o błędzie. Jeśli nigdy nie było takiej gałęzi lub biegniesz git fetchz --prune(która usuwa martwe gałęzie zdalnego śledzenia), a więc nie masz odpowiadającej gałęzi zdalnego śledzenia, otrzymasz skargę, ale będzie się ona odnosić do niej origin/feature/Sprint4/ABC-123-Branch.
W obu przypadkach możemy stwierdzić, że feature/Sprint4/ABC-123-Branchnie istnieje teraz na pilocie o nazwie origin.
Prawdopodobnie istniał kiedyś i prawdopodobnie utworzyłeś lokalny oddział z gałęzi zdalnego śledzenia. Jeśli tak, prawdopodobnie nadal masz gałąź zdalnego śledzenia. Możesz sprawdzić, kto usunął gałąź ze zdalnego i dlaczego, lub po prostu popchnąć coś, aby ją ponownie utworzyć, lub usunąć gałąź zdalnego śledzenia i / lub lokalny oddział.
1 Cóż, przynajmniej do tego się przyzna . Ale chyba, że specjalnie ukryli niektóre referencje, lista zawiera wszystko.