您可以在这里应用一系列方法来完成您想要的。这可能取决于您的存储库策略。例如,如果您重新设置分支,您将无法将其推送回服务器,您将不得不使用 -f 推送它或删除远程分支并推送一个新分支。有人可能会说,一旦您已经将分支推送到服务器,rebase 就不是一个好方法,如果这是您的仓库的策略,那么您必须将 master 合并到您的分支中,然后将其推送回远程。
让我们来谈谈这两种方法:
变基:
我个人更喜欢做更多的变基,但前提是我确定没有其他人正在使用我在遥控器上推送的分支。我喜欢变基,因为这最终会留下更清晰的历史记录,它这样做是因为它从分支中删除了我的更改,应用远程更改,然后将我的更改应用回顶部,但是这样做,它会更改提交哈希并且确实如此与您之前提交的相同提交不匹配,因此您必须使用 -f 推送它或删除远程分支并重新创建它。
我会这样做,在您的本地存储库上,我会转到主分支:
git checkout master
然后使用远程更改对其进行更新:
git pull
它将在你的 git master 分支上运行 git fetch 并在后台合并。
然后回到你的分支:
git checkout my_branch
然后用 master 变基:
git rebase master
如果一切运行没有冲突,你就可以开始了。
你可以使用:
git push -f origin my_branch
(小心!此命令将覆盖您的远程分支,在使用此命令之前确保您的 rebase 上一切正常是非常危险的。)
或者你可以删除你的远程分支,把它正常推送回服务器:
git push origin my_branch
合并:
使用这种方法,您最终会在历史记录中合并提交,并且日志可能会随着时间的推移而变得混乱,但这也有一些优势,如果您确实有冲突,则需要解决它只有一次,当你合并时,如果你在 rebase 时发生冲突,你可能需要多次解决它,因为它会尝试将你的提交一个一个地应用到新的远程提交上。
为此,您只需转到您的主分支并更新它:
git checkout master
和:
git pull
会和我们之前看到的一样
现在回到你的分支:
git checkout my_branch
然后运行:
git merge master
如果你没有任何冲突,你可以去,你可以将它推送到服务器,如果你只需要解决它,你也可以将它正常推送到服务器,因为现在你解决了新提交时发生冲突,本地分支和远程分支之间没有任何差异。
git push origin my_branch
就是这样,我希望这对您有所帮助,您可能可以用更少的步骤完成此操作,但这只是我喜欢做的步骤,它们可能不是更短的步骤,但我觉得这样更安全。当然,有很多关于合并和变基的选项,我建议您多研究一下,它们非常有用。