我错误地做了一个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 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
工作时才需要它,因此推力不是一种选择。
所以,如果你只是在分支上工作,那么就将它重新定义并在需要时强制推送它。如果其他人在分支上工作,那么将主分支合并到其中并进行正常推送。