Mam sklonowany projekt z gałęzi master ze zdalnego repozytorium remote_repo
. Tworzę nowy oddział i zobowiązuję się do tego oddziału. Inni programiści pchnęli do remote_repo
gałęzi master.
Muszę teraz przenieść moją gałąź RB na remote_repo
master.
Jak to zrobić? Jakie polecenia pisać na terminalu?
git
clone
git-rebase
Damir
źródło
źródło
Odpowiedzi:
Najpierw pobierz nowego wzorca z repozytorium nadrzędnego, a następnie oprzyj na nim swoją gałąź pracy:
Aktualizacja : zapoznaj się z odpowiedzią Paula Drapera, aby uzyskać bardziej zwięzły sposób na zrobienie tego samego - najnowsze wersje Git zapewniają prostszy sposób wykonywania odpowiednika powyższych dwóch poleceń.
źródło
Your branch and 'origin/b1' have diverged, # and have 3 and 2 different commits each, respectively.
Wydaje się, żegit pull
potrzebny jest inny . Czy to prawda, czy coś mi tu brakuje?git rebase master
nie wykona tego samego zadania co drugie polecenie (git rebase origin/master
)master
iorigin/master
może wskazywać na różne zatwierdzenia (zwłaszcza biorąc pod uwagę, że pierwsze polecenie byłogit fetch origin
, które może się modyfikowaćorigin/master
).źródło
git pull --rebase=interactive origin master
dev
i uruchomionejgit pull --rebase origin master
, tylko gałąźdev
będzie modyfikowana, a niemaster
. Dokumentacja--rebase
flagi mówi, że próbujerebase the current branch on top of the upstream branch after fetching
i nie ma nic na temat modyfikowania lokalnych gałęzi śledzenia.Po zatwierdzeniu zmian w swoim oddziale, sprawdź
master
i wyciągnij go, aby uzyskać najnowsze zmiany z repozytorium:Następnie sprawdź swój oddział i wprowadź zmiany w bazie
master
:... lub ostatnie dwa polecenia w jednym wierszu:
Podczas próby wypchnięcia z powrotem
origin/RB
prawdopodobnie wystąpi błąd; jeśli pracujesz jako jedynyRB
, możesz wymusić wypychanie:... lub w następujący sposób, jeśli odpowiednio skonfigurowałeś git:
źródło
git push
bez-f
).Uwaga: Jeśli masz już szeroką wiedzę na temat rebase, użyj poniżej jednego linera do szybkiego rebase. Rozwiązanie: Zakładając, że pracujesz w oddziale i jesteś jedyną osobą pracującą nad nim.
Rozwiązuj wszelkie konflikty, testuj kod, zatwierdzaj i wypychaj nowe zmiany do zdalnego oddziału.
Poniższe kroki mogą pomóc każdemu, kto jest nowy
git rebase
i chciał to zrobić bezproblemowoKrok 1: Zakładając, że w tym momencie w YourBranch nie ma żadnych zmian i zmian, które należy wprowadzić. Odwiedzamy YourBranch.
Co się stało? Wyciąga wszystkie zmiany dokonane przez innych programistów pracujących w twoim oddziale i nakłada na niego zmiany.
Krok 2: Rozwiąż wszelkie pojawiające się konflikty.
Krok 3:
Co się stało? Pobiera wszystkie najnowsze zmiany ze zdalnego sterownika głównego i zmienia na lokalnym urządzeniu głównym lokalnego. Zawsze dbam o to, by zdalny master był czysty i gotowy do wydania! I wolę pracować tylko lokalnie na master lub oddziałach. Polecam to robić, dopóki nie dostaniesz pomocy w zmianach gita lub zatwierdzeniach. Uwaga: Ten krok nie jest potrzebny, jeśli nie utrzymujesz lokalnego wzorca, zamiast tego możesz wykonać pobieranie i zmianę bazy zdalnego wzorca bezpośrednio w oddziale lokalnym. Jak wspomniałem na początku w jednym kroku.
Krok 4: Rozwiąż wszystkie pojawiające się konflikty.
Krok 5:
Co się stało? Zdarza się Rebase on master
Krok 6: Rozwiąż wszelkie konflikty, jeśli występują konflikty. Służy
git rebase --continue
do kontynuowania bazy po dodaniu rozwiązanych konfliktów. W dowolnym momencie możesz użyć,git rebase --abort
aby przerwać rebase.Krok 7:
Co się stało? Przekazywanie zmian do zdalnego YourBranch.
--force-with-lease
upewni się, czy w trakcie dokonywania zmian wprowadzane są jakiekolwiek inne zmiany dla YourBranch od innych programistów. Jest to bardzo przydatne, a nie wymuszone. W przypadku jakichkolwiek nadchodzących zmian pobierz je, aby zaktualizować lokalny YourBranch przed wprowadzeniem zmian.Dlaczego muszę wprowadzać zmiany? Aby ponownie napisać komunikat zatwierdzenia w zdalnej YourBranch po prawidłowej zmianie bazy lub Jeśli występują jakieś konflikty rozwiązane? Następnie musisz przekazać zmiany rozwiązane w lokalnym repozytorium do zdalnego repozytorium YourBranch
Yahoooo ...! Udało ci się ukończyć z powodzeniem.
Możesz także chcieć:
Kiedy i dlaczego? Połącz swój oddział w master, jeśli zostanie to zrobione ze zmianami dokonanymi przez Ciebie i innych programistów. Co sprawia, że YourBranch jest na bieżąco z masterem, gdy chcesz później pracować w tym samym oddziale.
źródło
Pulls latest changes from remote master to local master. I always prefer keeping remote master clean and release ready always!
. Zaktualizuję mój opis.Krok 1:
Krok 2:
Krok 3: (Napraw, jeśli występują konflikty)
Krok 4:
Krok 5:
źródło
1. Najpierw aktualizacja Master ...
2. Teraz podstawowa gałąź źródłowa z bazą master
JEŻELI gałąź źródłowa jeszcze nie istnieje na pilocie, to:
"zrobione..."
źródło
git fetch origin master:master
pobiera najnowszą wersję master bez konieczności jej sprawdzania.Wszystko czego potrzebujesz to:
git fetch origin master:master && git rebase master
👌źródło
git fetch
aktualizuje wzorca bez konieczności jego sprawdzania? Tyle że aktualizacjegit fetch
nie sągit merge
w porządku? Więc jeśli kasy,master
nie będzie mieć najnowszych aktualizacji. Więc nie jest to krótszy zrobić podczas fabularnego oddziału,git fetch
następniegit rebase origin/master
? Nie możemy tego zrobić,git rebase master
ponieważ będzie to próba zmiany bazymaster
w obszarze roboczym, musimyorigin/master
wydostać się z nie połączonego, ale siedzącego na miejscu.