Otrzymuję ten błąd przy pobieraniu:
Twoja konfiguracja łączy się ze zdalnym „refs / heads / feature / Sprint4 / ABC-123-Branch”, ale żadne takie ref nie zostało pobrane.
Ten błąd nie pojawia się w żadnym innym oddziale.
Szczególną cechą tej gałęzi jest to, że jest tworzona z poprzedniego zatwierdzenia innej gałęzi.
Mój plik konfiguracyjny wygląda następująco:
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
hideDotFiles = dotGitOnly
[remote "origin"]
url = <url here>
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "new-develop"]
remote = origin
merge = refs/heads/new-develop
[branch "feature/Sprint4/ABC-123-Branch"]
remote = origin
merge = refs/heads/feature/Sprint4/ABC-123-Branch
Odpowiedzi:
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 nazwiefeature/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:
Dyskusja
Musisz działać
git pull
(jeśli był uruchomionygit merge
, pojawił się inny komunikat o błędzie lub komunikat o błędzie w ogóle).Po uruchomieniu
git fetch
Twój Git kontaktuje się z innym Gitem na podstawieurl
linii 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-remote
aby zobaczyć, jak to działa (spróbuj, to jest edukacyjne). Oto fragment tego, co otrzymuję, uruchamiając go w repozytorium Git dlagit
siebie:Do
refs/heads/
listy wpisy wszystkich oddziałów, które istnieją na pilocie, 1 wraz z odpowiednimi popełnić identyfikatory (narefs/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
fetch
wierszami w tej samejremote
sekcji. W tym przypadku, twój Git zastępujerefs/heads/master
się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.git
katalogu). Ten plik zapisuje pobrane nazwy i identyfikatory.git pull
Komenda służy jako skrót wygoda: to działagit fetch
na odpowiednim pilocie, a następniegit 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 pobieraniaorigin
, 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 pull
narzeka i przestaje.Jeśli uruchomisz to jako dwa osobne kroki,
git fetch
a następniegit merge
(lubgit rebase
), Twój Git spojrzy na twoje buforowaneremotes/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 biegnieszgit fetch
z--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 niejorigin/feature/Sprint4/ABC-123-Branch
.W obu przypadkach możemy stwierdzić, że
feature/Sprint4/ABC-123-Branch
nie istnieje teraz na pilocie o nazwieorigin
.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.
źródło
git remote prune origin
git fetch --prune origin
lub ustawićfetch.prune
siętrue
w konfiguracji (wszystkie trzy mają zrobić to samo, choć w kilku wersjach Git niektóre z nich nie były bardzo wiarygodne).git checkout <your remote branch>
i wszyscy będą dobrzy (w niektórych przypadkach).git branch --set-upstream-to=origin/master master
aby zmienić ustawienie upstream dla swojego lokalnegomaster
. Usuń-i-odtwórz ma to jako efekt uboczny (zakładając, że używasz stylu DWIM,git checkout master
aby go stworzyć), z dodatkowym efektem ubocznym, wymuszającmaster
dopasowanie do twojegoorigin/master
.Może się to również zdarzyć, jeśli zmienisz nazwę oddziału. Wykonaj następujące kroki (jeśli wiesz, że nazwa gałęzi została zmieniona) Zakładając, że wcześniejsza nazwa gałęzi to
wrong-branch-name
i ktoś zmienił jej nazwę nacorrect-branch-name
So.git pull
(zobaczysz to „Twoja konfiguracja określa…”)git push --set-upstream origin correct-branch-name
git pull
(nie dostaniesz wcześniejszej wiadomości)źródło
git push
i nie będzie działać, jeśli bieżąca gałąź znajduje się za pilotem.git pull origin correct-branch-name
wystarczy.Sprawdź, czy zdalna gałąź jest dostępna do pobrania. Miałem ten sam problem, w końcu zdałem sobie sprawę, że gałąź zdalna została przez kogoś usunięta.
źródło
Dla mnie była to kwestia rozróżniania wielkości liter. Mój oddział lokalny to Version_feature2 zamiast Version_Feature2. Ponownie sprawdziłem swoją gałąź, używając właściwej obudowy, a następnie git pull zadziałało.
źródło
Ten błąd można również otrzymać, gdy w nazwie gałęzi źródłowej występuje problem ze sprawą.
Na przykład: gałąź pochodzenia jest,
team1-Team
a gałąź lokalna została zameldowana jakoteam1-team
. Wtedy toT
w-Team
it
w-team
może być przyczyną takiego błędu. Stało się to w moim przypadku. Tak więc, zmieniając nazwę lokalną z nazwą gałęzi pochodzenia, błąd został rozwiązany.źródło
W moim przypadku po prostu brakowało początkowego zatwierdzenia na zdalnym oddziale, więc oddział lokalny nie znalazł niczego do pobrania i wyświetlał ten komunikat o błędzie.
Zrobiłem:
źródło
Otrzymałem podobny błąd, gdy faktyczną przyczyną było to, że mój dysk był pełny. Po usunięciu niektórych plików
git pull
zaczął działać zgodnie z oczekiwaniami.źródło
Nadal napotykałem ten problem. W moim przypadku komentarz @ Jerrecka na temat różnic w nazwach gałęzi był przyczyną tego błędu. Niektóre narzędzia Windows nie są świadome rozróżniania wielkości liter.
Aby wyłączyć rozróżnianie wielkości liter w git, uruchom następujące polecenie:
Pamiętaj, że wpłynie to bardziej niż nazwy oddziałów. Na przykład, jeśli masz „Foo.h” i „foo.h” w tym samym katalogu (nie jest to świetny pomysł podczas tworzenia oprogramowania dla systemu Windows), podejrzewam, że nie możesz wyłączyć rozróżniania wielkości liter.
źródło
Wystarczy sprawdzić, czy ktoś zdalnie usunął gałąź.
źródło
W moim przypadku usunąłem pierwotną gałąź, z której pochodzi moja bieżąca gałąź. Więc w pliku .git / config miałem:
simil2.0.5 został usunięty. Zastąpiłem go tą samą nazwą oddziału:
i zadziałało
źródło
Możesz łatwo połączyć swój oddział lokalny ze zdalnym, uruchamiając:
źródło
Dla mnie tak się stało, ponieważ połączyłem dewelopera gałęzi z masterem za pomocą interfejsu sieciowego, a następnie próbowałem zsynchronizować / pociągnąć za pomocą VSCode, który był otwarty w gałęzi dev (dziwne, że nie mogłem zmienić się na master bez otrzymania tego błędu).
Ma to sens, że nie można go znaleźć refs / heads / dev - dla mnie łatwiej było po prostu usunąć folder lokalny i ponownie sklonować.
źródło
Właśnie dostałem dokładnie ten błąd, gdy wykonuję polecenie „git pull”, gdy mój dysk jest pełny. Stworzyłem trochę miejsca i wszystko znów zaczęło działać poprawnie.
źródło
Możesz edytować
~/.gitconfig
plik w folderze domowym. Tutaj zapisywane są wszystkie ustawienia --global.Lub użyj
git config --global --unset-all remote.origin.url
i po uruchomieniugit fetch
z adresem URL repozytorium.źródło
Miałem do czynienia z tym samym problemem, w którym moja obecna gałąź była deweloperem, a ja sprawdzałem gałąź MR i potem zacząłem ściągać git. Łatwe obejście, które podjąłem, to to, że utworzyłem nowy folder dla MR Branch i zrobiłem tam git, a następnie klon git.
Zasadniczo utrzymywałem różne foldery do przesyłania kodu do innej gałęzi.
źródło
Właśnie dostałem ten sam błąd, gdy nie użyłem właściwej skrzynki. Mógłbym sprawdzić „integrację”. Git kazał mi wykonać
git pull
aktualizację mojego oddziału. Zrobiłem to, ale otrzymałem wspomniany błąd. Prawidłowa nazwa oddziału to „Integracja” z wielką „I”. Kiedy sprawdziłem tę gałąź i wyciągnąłem, zadziałała bez problemu.źródło
Jeśli kolejna próba po prostu działa, oznacza to, że Internet nie był podłączony.
źródło