mnm*_*nml 83 version-control git merge branch
我一直在一个新分支上开发一个新功能,同时在我的主分支上做了很多更改。
是否可以将 master 分支合并到我的新分支中以使其保持最新状态,以便在新功能完成后我不会有太多合并冲突?
Chr*_*röm 105
您可以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
Run Code Online (Sandbox Code Playgroud)
但是,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
Run Code Online (Sandbox Code Playgroud)
提交 A、B、C 在 rebase 后悬空,但可以通过git reflog featureas访问feature@{1}。
如果有人拉了你的分支,或者你把它推到了某个地方,你应该合并到它,以避免在另一端造成混乱和额外的工作。请参阅从上游 rebase 恢复。
这是git merge masterin branch的结果feature:
A---B---C feature A---B---C---M feature
/ --merge--> / ,---’
D---E---F---G master D---E---F---G master
Run Code Online (Sandbox Code Playgroud)
或者,如果你git merge feature在 branch master,它看起来像这样:
A---B---C feature A---B---C feature
/ --merge--> / \
D---E---F---G master D---E---F---G---M master
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
210216 次 |
| 最近记录: |