我一直在一個新分支上開發一項新功能,同時也在我的主分支上進行了相當多的更改。
是否可以將主分支合併到我的新分支中以保持最新狀態,以便在新功能完成後不會出現太多合併衝突?
答案1
你可以git merge master
或者git rebase master
。
如果分支還沒有分發給其他人,在這種情況下我更願意git 變基。
因為git rebase
使得功能分支上的變更好像是在主分支上的變更之上進行的,這使得版本圖更簡單。
變基
舉個例子git 變基手冊,git rebase master
在分支feature
:
A---B---C feature A'--B'--C' feature
/ --rebase--> /
D---E---F---G master D---E---F---G master
然而,git rebase
只有當沒有其他人在處理它時才適用,否則他們會感到混亂和額外的工作,因為舊的提交 A、B、C 現在被新的提交 A'、B'、C' 和 F 取代和G以前不存在。
git rebase master
分支後的實際結果feature
是這樣的:
( A---B---C ) feature@{1}
/
/ A'--B'--C' feature
/ /
D---E---F---G master
提交 A、B、C 在變基後懸空,但可以通過git reflog feature
as到達feature@{1}
。
合併
如果有人拉出了你的分支,或者你把它推到了某個地方,你應該合併到它中,以避免另一端的混亂和額外的工作。看從上游變基恢復。
git merge master
這是in 分支的結果feature
:
A---B---C feature A---B---C---M feature
/ --merge--> / ,---’
D---E---F---G master D---E---F---G master
或者,如果您git merge feature
在分支中master
,它看起來像這樣:
A---B---C feature A---B---C feature
/ --merge--> / \
D---E---F---G master D---E---F---G---M master