我有一个从master分支出来的release分支。 并且在发行分支上会有一些本地提交。 我需要继续同步master的release分支。因此,我每天早晨运行脚本,并执行以下步骤:
git checkout releasebranch
git rebase -Xtheirs master
(Xtheir,以便在发生冲突时覆盖发布分支上的本地更改)git pull origin releasebranch --rebase
(在重新设置基准后将我的本地提交保留在原处)git push origin releasebranch
这导致重复的提交,并且与master分支之间的差异很大。 我是否遵循正确的方法同步分支?
注意:
一种。我需要运行一个自动化脚本进行同步,因此手动解决冲突是不切实际的。这就是为什么使用Xtheirs
选项的原因。
b。尝试过git merge -Xours master
,它引发了很多冲突。
C。我有另一个分支正在使用git rebase -s ours master
命令从master同步,并且工作正常。但是在这种情况下,我需要在releasebranch上进行本地更改以覆盖master中的更改。
答案 0 :(得分:2)
您的第三步和第四步对我来说可疑。理想情况下,如果您正在为releasebranch
使用变基工作流,那么您将是唯一使用该分支的工作流。因此,第二步很有意义,因为这是您与master
保持同步的方式。但是我不确定要与共享此分支的人进行的其他更改保持同步。
对于第四步,由于您可能已经重写了releasebranch
的历史记录,因此大多数情况下,以下操作将失败:
git push origin releasebranch
相反,您需要通过以下方式强制推动发布分支:
git push --force origin releasebranch
所以可能的建议是,如果可能的话,取消第三步,然后在第四步中强行推入。