git:重新设置基准后如何合并或重新设置基准?

时间:2019-05-01 09:21:24

标签: git merge rebase

我犯了一个错误,那就是要进行重新设置以将分支与该分支所基于的最新版本合并。我之所以说错是因为我不知道以后会更困难(例如git pull在没有冲突的地方会引起重大冲突,而git push需要用力)。

这是我到目前为止所做的:

$ git checkout major_branch
$ git pull
$ git checkout my_branch
make some changes and commits.
$ git rebase major_branch
make some changes and commits.
$ git push --force 

现在,我需要再次从major_branch获取最新的更改。除了我以外,没有人从事过my_branch。

我该如何避免灾难?

即我可以重新定级一次以上吗?

我可以返回合并并放弃基础调整吗?

这是正确的方法吗?:

$ git checkout major_branch 
$ git pull               // does this only pull major_branch, or all branches from origin?
$ git checkout my_branch // my_branch exists locally and on origin. what if they are different?
$ git merge major_branch // is this the correct "way round"?
$ git push --force . // push my_branch back to server in case my local machine dies.

如果作为我的“父母”的major_banch过时了,现在每个人都在使用“ major_branch2”,那么我有什么选择?我可以简单地执行“ git rebase major_banch2”吗?

在某个时候,我需要将所做的更改放回major_branch中。我该怎么做呢?我可以做类似的事情吗?

$ git checkout major_branch
$ git pull               // does this only pull major_branch?
$ git merge my_branch // is this the correct "way round"?
fix merge conflicts
$ git commit
$ git push // do I need to force?

作为另一种选择,是否有办法摆脱目前的重新定位情况?即转到我的个人功能分支所在的位置,其中包含我的所有更改以及major_banch的所有更改,但不进行重新设置,因此我可以简单地再次使用merge,pull和push(即“正常”工作流程)?< / p>

1 个答案:

答案 0 :(得分:1)

您可以根据需要进行多次变基。 git pull时,仅当前分支受到影响。因此,git checkout major_branch后跟git pull将从远程获取然后合并major_branch。然后,您可以检出my_branch并执行git rebase major_branch。这几乎是与其他任何人都无法使用的私有WIP分支一起使用的标准方法。在执行此操作时,您始终需要强制按下my_branch

如果您希望重新部署major_branch,并强行推动它,则不需要将my_branch合并到my_branch中。只有在有几个人在my_branch上工作时才需要它,因此不能选择强制推入。

因此,如果仅在分支上工作,则对其重新设置基础,并在需要时强制将其推入。如果其他人在分支上工作,则将主分支合并到该分支中,然后进行正常推送。