Git дръпни срещу git донесе git rebase

Друг въпрос каза, че git pull е подобно на git fetch + git merge .

Но каква е разликата между git pull vs git fetch + git rebase ?

272
28 июля '10 в 23:16 2010-07-28 23:16 зададен от michael 28 юли '10 в 23:16 2010-07-28 23:16
@ 2 отговора

От вашия въпрос трябва да бъде доста очевидно, че просто питате за разликата между 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 за даден клон, за да използвате rebase вместо сливането, като зададете конфигурационния параметър на branch.<name>.rebase на true. Можете също да направите това с едно кликване, използвайки git pull --rebase .

316
28 июля '10 в 23:23 2010-07-28 23:23 Отговор от Cascabel 28 юли '10 в 23:23 2010-07-28 23:23

TL; DR:

git pull е като бягай, get 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 )


За второто Ви изявление / въпрос:

border=0

"Но каква е разликата между git pull git fetch + git rebase "

Отново от същия източник:
git pull --rebase

"С --remase тя изпълнява git rebase вместо git сливане."


Сега, ако искате да попитате

"разлика между merge и rebase "

тук те също отговориха:
https://git-scm.com/book/en/v2/Git-Branching-Rebasing
(разликата между промяната на начина на записване на версиите и това, което не)

0
12 июня '17 в 7:52 2017-06-12 07:52 отговорът е даден harshvchawla 12 юни '17 в 7:52 2017-06-12 07:52

Други въпроси относно или Задайте въпрос