Ще одне сказане питання - git pull
це як git fetch
+ git merge
.
Але в чому різниця між git pull
VS git fetch
+ git rebase
?
Ще одне сказане питання - git pull
це як git fetch
+ git merge
.
Але в чому різниця між git pull
VS git fetch
+ git rebase
?
Відповіді:
З вашого запитання повинно бути досить очевидно, що ви насправді просто запитуєте про різницю між git merge
і git rebase
.
Отже, припустимо, що ви є загальним випадком - ви виконали якусь роботу над своєю майстерною галуззю, і ви потягнули з походження, що також виконало певну роботу. Після вибору все виглядає приблизно так:
- o - o - o - H - A - B - C (master)
\
P - Q - R (origin/master)
Якщо ви з’єднаєтесь у цей момент (поведінка за замовчуванням git pull), припускаючи, що немає конфліктів, ви закінчите це:
- o - o - o - H - A - B - C - X (master)
\ /
P - Q - R --- (origin/master)
Якщо ви, з іншого боку, зробили відповідну базу даних, закінчите це:
- o - o - o - H - P - Q - R - A' - B' - C' (master)
|
(origin/master)
Вміст вашого робочого дерева повинен закінчуватися однаковим в обох випадках; ви щойно створили іншу історію, яка веде до неї . Ребаза переписує вашу історію, роблячи вигляд так, ніби ви здійснили поверх нової основної гілки походження ( R
), а не там, де ви спочатку здійснили ( H
). Ніколи не слід використовувати підхід до ребазування, якщо хтось уже вийшов з вашої гілки.
Нарешті, зауважте, що ви можете фактично налаштувати git pull
для даної гілки використовувати ребазу замість злиття, встановивши параметр config branch.<name>.rebase
на значення true. Ви також можете зробити це за один потяг, використовуючи git pull --rebase
.
git pull
це як біг git fetch
тоді git merge
git pull --rebase
, як git fetch
тодіgit rebase
git pull
є як git fetch
+ git merge
.
"У режимі за замовчуванням git pull - це скорочення, за
git fetch
яким слідуєgit merge
FETCH_HEAD." Точніше,git pull
працюєgit fetch
з заданими параметрами, а потім закликаєgit merge
об'єднати отримані голови гілок у поточну гілку "
(Посилання: https://git-scm.com/docs/git-pull )
"Але яка різниця між git pull
VS git fetch
+ git rebase
"
Знову з того ж джерела:
git pull --rebase
"З --rebase, він запускає git rebase замість git spajanje."
'різниця між merge
і rebase
'
на що відповіли і тут:
https://git-scm.com/book/en/v2/Git-Branching-Rebasing
(різниця між зміною способу запису історії версій)
git fetch + git rebase
роботи команд відтепер. Відтепер на нашому дереві git більше немає конфліктів :)