Mam gałąź repozytorium publicznego i próbuję zaktualizować moją gałąź bieżącymi commits z oryginalnego repozytorium:
$ git fetch <remote>
remote: Counting objects: 24, done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 20 (delta 12), reused 0 (delta 0)
Unpacking objects: 100% (20/20), done.
From git://github.com/path_to/repo
9b70165..22127d0 master -> $/master
$ git rebase <remote>
fatal: Needed a single revision
invalid upstream <remote>
To <remote>
jest miejsce mojej zdalnej nazwy i tak naprawdę nie jest moją zdalną nazwą. Dokumentacja dotycząca tego błędu wydaje się być nieco luźna.
Odpowiedzi:
Musisz podać nazwę gałęzi (lub inny identyfikator zatwierdzenia), a nie nazwę zdalnego do
git rebase
.Na przykład:
nie:
Uwaga, chociaż
origin
powinno być rozwiązywane do ref,origin/HEAD
gdy jest używane jako argument, gdy wymagane jest odwołanie do zatwierdzenia, wydaje się, że nie każde repozytorium uzyskuje takie odniesienie, więc może nie działać (iw twoim przypadku). Opłaca się mówić wprost.źródło
origin
w kontekście referencyjnym jest interpretowane jakoorigin/HEAD
. Widziałem jednak, że repozytoria nie wiedzą, co toorigin/HEAD
jest ...git rebase origin
na repozytorium testowym (gdzieorigin
jest aHEAD
) i otrzymuję błąd OP. Dokumentacja dla rebase nie mówi, że zdalna nazwa jest poprawna dla<upstream>
.git rev-parse origin
działa, podobnie jakgit rebase origin
w moim klonie git.git (w aktualnym, przewijającym się do przodu i prawdziwym przypadku rebase, w tym interaktywnym).git describe
swójHEAD
?Sprawdź, czy nazwa gałęzi została wpisana poprawnie . Przebudowywałem gałąź fabularną (tj.
branch_name
) I zapomniałem o części fabularnej. (tj.story/branch_name
) a potem git wypluł na mnie ten błąd, który nie miał większego sensu w tym kontekście.źródło
featureName
gdy gałąź jest faktycznie nazwanafeatures/featureName
Wpadłem na to i zdałem sobie sprawę, że nie pobrałem upstream przed próbą zmiany bazy. Potrzebowałem tylko
git fetch upstream
źródło
Problem polega na tym, że rozgałęziłeś się od ... miejsca, do którego próbujesz zmienić bazę. Nie możesz ponownie bazować na gałęzi, która nie zawiera zatwierdzenia, na którym została pierwotnie utworzona twoja bieżąca gałąź.
Otrzymałem to, gdy po raz pierwszy zmieniłem bazę lokalnego oddziału X na wypchnięty jeden Y, a następnie próbowałem zmienić bazę gałęzi (najpierw utworzonej na X) na wypchniętą Y.
Rozwiązany dla mnie przez zmianę bazy na X.
Nie mam problemu ze zmianą bazy na zdalne gałęzie (potencjalnie nawet nie wyrejestrowane), pod warunkiem, że moja obecna gałąź pochodzi od przodka tej gałęzi.
źródło
--onto
. Wszystko pochodzi od jakiegoś wspólnego przodka (dla normalnych repozytoriów), więc to nie jest problem. Otrzymałem ten błąd podczas próby zmiany bazy danych,foo
gdy nie utworzyłem jeszcze gałęzi do śledzeniaorigin/foo
.Dla pilota
origin
:źródło
git submodule deinit --all -f
pracował dla mnie.źródło