Answers:
您可以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
in分支之后的实际结果feature
是:
( A---B---C )
/
/ A'--B'--C' feature
/ /
D---E---F---G master
提交A,B,C在重新设置基准后悬空,但可通过到达git reflog feature
。
如果有人拉了您的分支,或者您已将其推到某个位置,则应该合并到该分支中,以免造成混乱和另一端的额外工作。请参阅从上游变基恢复。
这是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
在branch中master
,它将如下所示:
A---B---C feature A---B---C feature
/ --merge--> / \
D---E---F---G master D---E---F---G---M master
git rebase master
,它将“重新设置”功能分支中的更改,从而使它们“基于”主分支中的更改。如果master分支中的更改与feature分支中的更改冲突,则git会要求您解决它们并继续,跳过它们或中止。如果不确定,可以签出测试分支以进行尝试git checkout -b test-feature feature
(假设您的功能分支命名为“功能”)。
git rebase
仅应在尚未分发分支的情况下使用,因为您说这是一个新分支,所以我以为是这种情况,对此感到抱歉。请参阅我链接到的文档中的从上游基准恢复。您将不得不使用git merge
。git reflog
如果您想找回以前的功能分支头,可以使用它。