Sklonowałem repozytorium, po którym ktoś utworzył nowy oddział, nad którym chciałbym zacząć pracować. Przeczytałem instrukcję i wydaje się, że jest to całkiem proste. O dziwo, to nie działa, a wszystkie posty, które znalazłem, sugerują, że robię dobrze. Poddaję się więc baranowaniu, ponieważ z tym musi być oczywiście coś nie tak:
Wydaje się, że właściwe jest działanie
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 tym, git fetch
jak nie widzę zdalnej gałęzi dev-gml. Dlaczego nie? Jeśli świeżo sklonuję repozytorium, to już tam jest, więc na pewno istnieje gałąź zdalna:
$ 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 permutacji ...
git config --get remote.origin.fetch
produkuje? Jeśli nie+refs/heads/*:refs/remotes/origin/*
, prawdopodobnie tak powinno być.+refs/heads/master:refs/remotes/origin/master
zemaster
zamiast*
Odpowiedzi:
Problem można zobaczyć podczas sprawdzania
remote.origin.fetch
ustawienia(wiersze rozpoczynające się od
$
są poleceniami bash z wpisanymi poleceniami. Pozostałe wiersze to wynikowy wynik)Jak widać, w moim przypadku pilot został ustawiony tak, aby specyficznie i tylko pobierał gałąź master. Naprawiłem to zgodnie z poniższym opisem, w tym drugie polecenie sprawdzania wyników.
Symbol wieloznaczny
*
oczywiście oznacza wszystko pod tą ścieżką.Niestety widziałem ten komentarz po tym, jak już go przekopałem i znalazłem odpowiedź metodą prób i błędów.
źródło
--replace-all
parametr, aby zastąpić wszystkie wartości w konfiguracji dla mojegoremote.origin.fetch
git clone <url> --branch <branch> --single-branch [<folder>]
git clone ... --depth 1
Miałem dzisiaj ten problem na repozytorium.
To nie było
+refs/heads/*:refs/remotes/origin/*
problem jak na najlepsze rozwiązanie.Objawem było po prostu to
git fetch origin
lubgit fetch
po prostu nie wydają się nic zrobić, chociaż były odległe oddziały do pobrania.Po wypróbowaniu wielu rzeczy usunąłem pilot źródłowy i odtworzyłem go. Wydaje się, że to naprawiło. Nie wiem dlaczego.
usuń za pomocą:
git remote rm origin
i odtwórz z:
git remote add origin <git uri>
źródło
remote.origin.fetch
np+refs/heads/*:refs/remotes/origin/*
. Powyższe rozwiązanie pomogło mi.git remote update origin
pracował dla mnie. Chyba coś wymagało odświeżenia?git remote update origin
nie działało dla mnie, ale działało usunięcie i dodanie pilota.Zdalna aktualizacja
Musisz biec
lub
Następnie możesz uruchomić,
git branch -r
aby wyświetlić listę zdalnych gałęzi.Kasa nowego oddziału
Aby śledzić (nową) gałąź zdalną jako gałąź lokalną:
lub (czasami nie działa bez dodatkowych
remotes/
):Pomocne ściągawki
źródło
git fetch
następujegit branch -a
to nie pokazuje wszystkich gałęzi. Musiałem usunąć katalog roboczy i ponownie sklonować, aby zobaczyć gałąźdev-gml
utworzoną przez współpracownika. Tym razem zadziałało, ale będziemy się często rozgałęziać!Edit:
bardzo dobrze, mogło zadziałać. Właśnie tego bym spróbował, gdybym nadal miał problem. HTHgit remote update origin
. Dzięki temu brakująca gałąź była widoczna przezgit branch -l -r
. (Spojrzałem nagit config --get remote.origin.fetch
i wynik był+refs/heads/*:refs/remotes/origin/*
napisz to z terminala
to działa dobrze.
źródło
Aby uczynić go bardziej szczegółowym Utwórz gałąź śledzenia, co oznacza, że śledzisz teraz gałąź zdalną.
Po czym możesz
Następnie pracuj nad tym oddziałem
Po wprowadzeniu zmian w oddziale. Możesz pobierać i scalać za pomocą gałęzi zdalnego śledzenia, aby scalić zmiany i przekazać je do zdalnej gałęzi, jak poniżej.
Mam nadzieję, że to pomaga i daje wyobrażenie o tym, jak to działa.
źródło
Miałem podobny problem, jednak w moim przypadku mogłem przyciągnąć / wcisnąć do zdalnego oddziału, ale
git status
nie pokazałem stanu oddziału lokalnego względem zdalnych.Również w moim przypadku
git config --get remote.origin.fetch
nic nie zwróciłoProblem polega na tym, że w literaturze było literówka
.git/config
w wierszu pobierania odpowiedniego zdalnego bloku . Prawdopodobnie coś, co wcześniej przez pomyłkę dodałem (czasami patrzę bezpośrednio na ten plik, a nawet go edytuję)Sprawdź więc, czy Twój zdalny wpis w
.git/config
pliku jest poprawny, np .:źródło
Przyczyną może być moment twarzy: jeśli przełączysz się między kilkoma klonami, łatwo znajdziesz się w niewłaściwym drzewie źródłowym, próbując wyciągnąć nieistniejącą gałąź. Łatwiej jest, gdy klony mają podobne nazwy lub repo to odrębne klony dla tego samego projektu od każdego z wielu współautorów. Wydaje się, że nowy klon git rozwiązałby ten „problem”, gdy prawdziwym problemem jest utrata koncentracji lub kontekst pracy lub jedno i drugie.
źródło
Musiałem przejść do moich zdalnych repozytoriów GitExtensions, ponieważ nic tutaj nie działało. Tam zobaczyłem, że 2 oddziały nie mają skonfigurowanego zdalnego repozytorium. po dostosowaniu wygląda następująco
Oddział powiadomień
noExternal3
nadal pokazuje, że nie ma zdalnego repozytorium. Nie jestem pewien, jakie kombinacje poleceń bash mogłyby to znaleźć lub dostosować.źródło
Miałem ten sam problem podczas konfigurowania mojego repozytorium od zera. Próbowałem wszystkiego, nic nie działało oprócz usunięcia źródła i ponownego dodania go ponownie.
źródło
Mieliśmy ten sam problem i musisz go użyć
Mam nadzieję, że pomoże to komuś, kto zmaga się z tym samym problemem
źródło