我犯了一个错误,那就是要进行重新设置以将分支与该分支所基于的最新版本合并。我之所以说错是因为我不知道以后会更困难(例如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>
答案 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
上工作时才需要它,因此不能选择强制推入。
因此,如果仅在分支上工作,则对其重新设置基础,并在需要时强制将其推入。如果其他人在分支上工作,则将主分支合并到该分支中,然后进行正常推送。