central
Repozytorium musiał być ustawiony na nowym serwerze, więc stworzyłem nowy pilot na moim lokalnym repo i popchnął do tego.
Ale teraz, kiedy to robię git pull
, twierdzi, że jestem na bieżąco. To nie tak - mówi mi o starej gałęzi zdalnej, a nie nowej, o której wiem, że z pewnością ma nowe zobowiązania do pobrania.
Jak zmienić oddział lokalny, aby śledzić innego pilota?
Widzę to w pliku konfiguracyjnym git, ale nie chcę zepsuć rzeczy.
[branch "master"]
remote = oldserver
merge = refs/heads/master
Odpowiedzi:
Używając git v1.8.0 lub nowszego:
git branch branch_name
--set-upstream-to
your_new_remote/branch_name
Lub możesz użyć
-u
przełącznika:git branch branch_name
-u
your_new_remote/branch_name
Korzystając z git 1.7.7 lub wcześniejszej:
git branch --set-upstream branch_name your_new_remote/branch_name
źródło
git branch --unset-upstream
- następnie działa ona tak, jak podano w tej odpowiedzi (lub w następnejgit push -u / --set-upstream
).Dla mnie poprawka polegała na:
Następnie:
źródło
set-url
git push
W przypadku aktualnego git (2.5.5) polecenie jest następujące:
Spowoduje to zaktualizowanie zdalnie śledzonego oddziału dla bieżącego oddziału lokalnego
źródło
git branch --set-upstream-to=origin/develop
podniesiony błąd:error: the requested upstream branch 'origin/develop' does not exist
. Wcześniej zmieniłem nazwę zdalnej gałęzi na delelop.git fetch --all
może?Inną opcją, aby mieć dużą kontrolę nad tym, co się dzieje, jest ręczna edycja konfiguracji:
lub stenografia
Następnie edytuj plik do woli, zapisz, a zmiany zostaną zastosowane.
źródło
Jeśli jesteś na tym punkcie zdrowo, edycja pliku konfiguracyjnego jest wystarczająco bezpieczna. Jeśli chcesz być trochę bardziej paranoikiem, możesz użyć polecenia porcelany, aby go zmodyfikować:
Oczywiście, jeśli spojrzysz na konfigurację przed i po, zobaczysz, że zrobił dokładnie to, co zamierzałeś zrobić.
Ale w twoim indywidualnym przypadku chciałbym:
To znaczy, jeśli nowy serwer ma być kanonicznym pilotem, dlaczego nie nazwać go początkiem tak, jakbyś go sklonował?
źródło
remote rename
nie zrobiłby tego, o co jest poproszony, ponieważ zmienia on nazwę pilota zarówno w[remote]
configs, jak i[branch]
configs. Dlatego w tym przypadku należy edytować plik konfiguracyjny i robić to, co mówisz (zmiana nazw pilotów) tylko w[remote]
wierszach konfiguracji.lub
źródło
git fetch
. Utworzyłem nowy oddział w bitbucket i chciałem się do niego przełączyć. git nie wie o zdalnych zmianach, więc musiałem to zrobićgit fetch
wcześniejgit checkout feature/new-feature-branch
. Mam nadzieję, że to pomaga komuś innemu.To najłatwiejsze polecenie:
Na przykład, biorąc pod uwagę, że polecenie
git remote -v
tworzy coś takiego:Aby zamiast tego przejść do śledzenia zespołu:
źródło
Możesz usunąć swój obecny oddział i wykonać:
Lub zmień zmień serwer zdalny na bieżący w konfiguracji
źródło
git checkout --track -b local_branch_name origin/branch_name
W oparciu o to, co rozumiem z najnowszej dokumentacji git , streszczenie jest następujące:
To użycie wydaje się nieco inne niż odpowiedź urschrei, ponieważ w jego streszczeniu jest:
Zgaduję, że ponownie zmienili dokumentację?
źródło
W najnowszej wersji git, takiej jak 2.7.4 ,
git checkout branch_name
# nazwa oddziału, którą chcesz zmienić gałąź śledzeniagit branch --set-upstream-to=upstream/tracking_branch_name
#upstream - nazwa zdalnaźródło
Uważam, że post @critikaster jest pomocny, z wyjątkiem tego, że musiałem wykonać te polecenia za pomocą GIT 2.21:
źródło
najprostszym sposobem jest po prostu przejście do nowej gałęzi:
źródło