The Ultimate Guide to Git Merge and Git Rebase (Polski)

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śnijesc, 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 miejsce pick 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ępnie git rebase --continue., Możesz pominąć skonfliktowany commit, wpisując git rebase --skip, zatrzymać rebasing, uruchamiając git 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

Igit 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.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *