fetch w git nie pobiera wszystkich gałęzi

Sklonowałem repozytorium, po którym ktoś inny stworzył nową gałąź, nad którą chciałbym zacząć pracować. Przeczytałem instrukcję i wydaje mi się, że to proste. O dziwo to nie działa, a wszystkie posty, które znalazłem sugerują, że robię dobrze. Więc poddam się lambasting, bo tam musi być coś oczywiście nie tak z tym:

Poprawne działanie wydaje się być

git fetch
git branch -a
* master
  remotes/origin/HEAD --> origin/master
  remotes/origin/master
git checkout -b dev-gml origin/dev-gml

W tym momencie jest problem, z jakiegoś powodu po git fetch nie widzę zdalnej gałęzi dev-gml. Dlaczego nie? Jeśli sklonuję repozytorium świeżo, to tam jest, więc na pewno zdalna gałąź istnieje:

$ mkdir ../gitest
$ cd ../gitest
$ git clone https://github.com/example/proj.git
Cloning into proj...
remote: Counting objects: 1155, done.
remote: Compressing objects: 100% (383/383), done.
remote: Total 1155 (delta 741), reused 1155 (delta 741)
Receiving objects: 100% (1155/1155), 477.22 KiB | 877 KiB/s, done.
Resolving deltas: 100% (741/741), done.
$ cd projdir
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev-gml
  remotes/origin/master

Próbowałem git update, git pull, git fetch --all, git pretty-please we wszystkich możliwych permutacjach...

Author: Jonas, 2012-07-24

10 answers

Problem można zobaczyć sprawdzając ustawienie remote.origin.fetch
(Linie zaczynające się od $ są podpowiedziami Basha z wpisanymi przeze mnie poleceniami. Pozostałe linie są wynikowym wyjściem)

$ git config --get remote.origin.fetch
+refs/heads/master:refs/remotes/origin/master

Jak widzisz, w moim przypadku pilot był ustawiony tak, aby pobierał gałąź master tylko i wyłącznie. Naprawiłem to jak poniżej, w tym drugie polecenie, aby sprawdzić wyniki.

$ git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
$ git config --get remote.origin.fetch
+refs/heads/*:refs/remotes/origin/*

Symbol wieloznaczny * oczywiście oznacza wszystko pod tą ścieżką.

Niestety widziałem to komentarz po tym, jak już przekopałem się i znalazłem odpowiedź metodą prób i błędów.

 449
Author: AndASM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:17

Miałem ten problem dzisiaj na repo.

To nie był +refs/heads/*:refs/remotes/origin/* problem jak na najlepsze rozwiązanie.

Symptomem było po prostu to, że git fetch origin lub git fetch po prostu nic nie robiło, chociaż były odległe gałęzie do pobrania.

Po wypróbowaniu wielu rzeczy, usunąłem pilota origin i odtworzyłem go. Wygląda na to, że to naprawiło. Nie wiem dlaczego.

Usuń z: git remote rm origin

I odtworzyć z: git remote add origin <git uri>

 138
Author: stux,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-09 03:03:27

Zdalna aktualizacja

Musisz uruchomić

git remote update

Lub

git remote update <remote> 

Następnie możesz uruchomić git branch -r, Aby wyświetlić listę zdalnych gałęzi.

Sprawdź nowy oddział

Aby śledzić (nową) zdalną gałąź jako lokalną gałąź:

git checkout -b <local branch> <remote>/<remote branch>

Lub (czasami nie działa bez dodatkowych remotes/):

git checkout -b <local branch> remotes/<remote>/<remote branch>

Pomocne cheatsheets git

 71
Author: philipvr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-03-06 17:12:29

Zapisz go z Terminala

git fetch --prune.
Działa dobrze.
 9
Author: Samet ÖZTOPRAK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-03 14:16:31

Aby było bardziej szczegółowe Utwórz gałąź śledzenia, co oznacza, że śledzisz teraz gałąź zdalną.

git branch --track branch remote-branch
git branch --track exp remotes/origin/experimental

Po czym możesz

git branch   # to see the remote tracking branch "exp" created .

Następnie do pracy na tej gałęzi zrobić

git checkout branchname
git checkout exp

Po dokonaniu zmian w gałęzi. Możesz git fetch i GIT scalić ze zdalną gałęzią śledzenia, aby scalić zmiany i wypchnąć je do zdalnej gałęzi, jak poniżej.

git fetch origin
git merge origin/experimental  
git push origin/experimental

Mam nadzieję, że to pomoże i da ci pomysł, jak to działa.

 4
Author: Swapna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-26 22:31:56

Miałem podobny problem, jednak w moim przypadku mogłem ściągnąć / wcisnąć do zdalnej gałęzi, ale git status nie pokazywałem lokalnego stanu gałęzi w.R.T zdalnych.

Również w moim przypadku git config --get remote.origin.fetch nic nie zwróciłem

Problem polega na tym, że w pliku .git/config w wierszu pobierania odpowiedniego bloku zdalnego wystąpiła literówka. Prawdopodobnie coś, co wcześniej przez pomyłkę dodałem (czasami patrzę bezpośrednio na ten plik, a nawet go edytuję)

Więc sprawdź, czy zdalny wpis w pliku .git/config jest poprawne, np.:

[remote "origin"]
    url = https://[server]/[user or organization]/[repo].git
    fetch = +refs/heads/*:refs/remotes/origin/*
 2
Author: Juh_,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-28 09:48:22

Miałem ten sam problem dzisiaj skonfigurowanie mojego repo od zera. Próbowałem wszystkiego, nic nie działało, poza usunięciem źródła i ponownym dodaniem go z powrotem.

git remote rm origin
git remote add origin [email protected]:web3coach/the-blockchain-bar-newsletter-edition.git

git fetch --all
// Ta daaa all branches fetched
 2
Author: Lukas Lukac,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-28 17:45:14

Może to być spowodowane momentem dłoni: jeśli przełączasz się między kilkoma klonami, łatwo jest znaleźć się w niewłaściwym drzewie źródłowym, próbując wyciągnąć nieistniejącą gałąź. Jest to łatwiejsze, gdy klony mają podobne nazwy lub repozytoria są odrębnymi klonami dla tego samego projektu od każdego z wielu współpracowników. Nowy git clone najwyraźniej rozwiązuje ten "problem", gdy prawdziwym problemem jest utrata ostrości lub kontekstu pracy lub obu tych rzeczy.

 0
Author: jerseyboy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-05 15:20:31

Musiałem wejść do zdalnych repozytoriów GitExtensions, ponieważ nic tutaj nie działało. Tam zobaczyłem, że 2 gałęzie nie mają skonfigurowanego zdalnego repozytorium. po dopasowaniu wygląda to następująco Tutaj wpisz opis obrazka

Notice branch noExternal3 nadal pokazuje, że nie ma zdalnego repozytorium. Nie jestem pewien, jakie kombi poleceń bash znalazłoby lub dostosowało to.

 0
Author: Maslow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-28 14:15:06

Mieliśmy ten sam problem i musisz użyć

git fetch

git push origin branch_name

git branch -r

Mam nadzieję, że to pomoże komuś w obliczu tego samego problemu

 -1
Author: chazefate,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-25 11:44:18