我一直在新分支上开发新功能,同时在主分支上提交了相当多的更改。
是否可以将主分支合并到我的新分支以使其保持最新,以便在新功能完成后不会出现太多合并冲突?
答案1
您可以git merge master
或者git rebase master
。
如果该分支尚未分发给其他人,在这种情况下我更愿意git rebase。
因为git rebase
这使得功能分支上的更改好像是在主分支上的更改的基础上进行的,这使得版本图更简单。
变基
以git rebase 手册,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
in 分支之后的实际结果feature
是这样的:
( A---B---C ) feature@{1}
/
/ A'--B'--C' feature
/ /
D---E---F---G master
提交 A、B、C 在重新定基之后处于悬而未决的状态,但可以通过 进行git reflog feature
访问feature@{1}
。
合并
如果有人拉取了你的分支,或者你已将其推送到其他地方,则应将其合并到其中,以避免造成混乱和增加工作量。请参阅从上游 rebase 中恢复。
git merge master
这是分支的结果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