变基

变基

我一直在新分支上开发新功能,同时在主分支上提交了相当多的更改。

是否可以将主分支合并到我的新分支以使其保持最新,以便在新功能完成后不会出现太多合并冲突?

答案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 masterin 分支之后的实际结果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

相关内容