git:如何在rebase之后合并或变基?

问题描述 投票:1回答:1

我错误地做了一个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 

现在我需要从主要分支(再次)获得最新的更改。没有人,但我在我的分支机构工作。

没有灾难我该怎么做?

即我可以不止一次变换吗?

我可以回去合并并放弃变基吗?

这是正确的方式吗?:

$ 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的所有更改,但没有重新定义,所以我可以简单地使用合并,拉动和推动(即“正常”工作流程)?

git merge rebase
1个回答
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工作时才需要它,因此推力不是一种选择。

所以,如果你只是在分支上工作,那么就将它重新定义并在需要时强制推送它。如果其他人在分支上工作,那么将主分支合并到其中并进行正常推送。

© www.soinside.com 2019 - 2024. All rights reserved.