Witamy w naszym ultimate guide togit merge
I git rebase
. Ten samouczek nauczy Cię wszystkiego, co musisz wiedzieć o łączeniu wielu gałęzi z Gitem.
Git Merge
poleceniegit merge
Scali wszelkie zmiany, które zostały wprowadzone do bazy kodu w oddzielnej gałęzi do Twojej bieżącej gałęzi jako nowy commit.,
składnia polecenia jest następująca:
git merge BRANCH-NAME
na przykład, jeśli aktualnie pracujesz w gałęzi o nazwie dev
I chcesz scalić wszelkie nowe zmiany wprowadzone w gałęzi o nazwie new-features
, wydasz następujące polecenie:
git merge new-features
uwaga: jeśli są jakieś niezatwierdzone zmiany w bieżącej gałęzi, Git nie pozwoli Ci scalić, dopóki wszystkie zmiany w bieżącej gałęzi nie zostaną zatwierdzone., Aby obsłużyć te zmiany, możesz:
utworzyć nową gałąź i zatwierdzić zmiany
git checkout -b new-branch-namegit add .git commit -m "<your commit message>"
ukryć je
git stash # add them to the stashgit merge new-features # do your mergegit stash pop # get the changes back into your working tree
porzucić wszystkie zmiany
git reset --hard # removes all pending changes
Git Rebase
zmiana rozmiaru gałęzi w Git to sposób na przeniesienie całości gałęzi do innego punktu w drzewie. Najprostszym przykładem jest przesunięcie gałęzi dalej w górę drzewa., Załóżmy, że mamy gałąź, która odbiegała od gałęzi master w punkcie A:
/o-----o---o--o-----o--------- branch--o-o--A--o---o---o---o----o--o-o-o--- master
podczas rebase możesz przenieść ją w następujący sposób:
/o-----o---o--o-----o------ branch--o-o--A--o---o---o---o----o--o-o-o master
aby rebase, upewnij się, że masz wszystkie commity, które chcesz w rebase w Twojej gałęzi master. Sprawdź gałąź, którą chcesz zmienić i wpisz git rebase master
(gdzie master to gałąź, którą chcesz zmienić)., na przykład gałąź, która była oparta na innej gałęzi (nazwijmy ją feature) jest ponownie bazowana na master:
/---o-o branch /---o-o-o-o---o--o------ feature----o--o-o-A----o---o--o-o-o--o--o- master
Po git rebase master branch
lub git rebase master
po sprawdzeniu gałęzi otrzymasz:
/---o-o-o-o---o--o------ feature----o--o-o-A----o---o--o-o-o--o--o- master \---o-o branch
git rebase interactive w konsoli
aby użyć git rebase
w konsoli z listą zmian możesz wybrać, edytować lub upuścić w rebase:
- wprowadź
git rebase -i HEAD~5
z ostatnią liczbą, która jest dowolną liczbą zmian z najnowsza wersja, którą chcesz przejrzeć., - w Vimie naciśnij
esc
, a następniei
aby rozpocząć edycję testu. - po lewej stronie możesz zastąpić
pick
jednym z poniższych poleceń. Jeśli chcesz podzielić commit na poprzedni i odrzucić komunikat commit, wprowadźf
w miejscepick
commita. - Zapisz i zamknij Edytor tekstu.
- gdy rebase zostanie zatrzymany, wykonaj niezbędne korekty, a następnie użyj
git rebase --continue
dopóki rebase się nie powiedzie., - Jeśli rebasuje się pomyślnie, musisz wymusić wypchnięcie zmian za pomocą
git push -f
, aby dodać zrebasowaną wersję do zdalnego repozytorium. - jeśli występuje konflikt scalania, istnieje wiele sposobów na naprawienie tego problemu, w tym stosowanie się do sugestii zawartych w tym przewodniku. Jednym ze sposobów jest otwieranie plików w edytorze tekstu i usuwanie części kodu, których nie chcesz. Następnie użyj
git add <file name>
, a następniegit rebase --continue
., Możesz pominąć skonfliktowany commit, wpisującgit rebase --skip
, zatrzymać rebasing, uruchamiającgit rebase --abort
w konsoli.
konflikty scalające
konflikt scalający występuje, gdy tworzysz commity na oddzielnych gałęziach, które zmieniają tę samą linię w sprzeczne sposoby.,która Wersja pliku ma być przechowywana w komunikacie o błędzie podobnym do następującego:
CONFLICT (content): Merge conflict in resumé.txt Automatic merge failed; fix conflicts and then commit the result.
Jeśli spojrzysz na plik resumé.txt
w edytorze kodu możesz zobaczyć, gdzie miał miejsce konflikt:
<<<<<<< HEADAddress: 808 South Street=======Address: 505 North Street>>>>>>> updated_address
Git dodał kilka dodatkowych linii do pliku:
<<<<<<< HEAD
=======
>>>>>>> updated_address
Git merge vs Git rebase
oba iv id
git rebase
są bardzo przydatnymi poleceniami, a jedno nie jest lepsze od drugiego., Istnieją jednak bardzo ważne różnice między tymi dwoma poleceniami, które ty i twój zespół powinniście wziąć pod uwagę.
Po uruchomieniugit merge
tworzony jest dodatkowy commit scalający. Ilekroć pracujesz w lokalnym repozytorium, zbyt wiele zmian scalających może sprawić, że historia zmian będzie myląca. Jednym ze sposobów uniknięcia commitu scalającego jest użycie git rebase
.
git rebase
to bardzo potężna funkcja. Biorąc to pod uwagę, jest to również ryzykowne, jeśli nie jest używane we właściwy sposób., git rebase
zmienia historię zmian, więc używaj jej ostrożnie. Jeśli rebasing odbywa się w zdalnym repozytorium, może to spowodować wiele problemów, gdy inni programiści próbują pobrać najnowsze zmiany kodu ze zdalnego repozytorium. Pamiętaj, aby uruchomić git rebase
tylko w lokalnym repozytorium.
to wszystko, co musisz wiedzieć, aby połączyć i rebase z najlepszymi z nich.