Rebase和更改分支包括pull请求中的所有合并提交

时间:2013-06-03 12:00:29

标签: git branch rebase

我来自SVN背景。我已经分叉并分支了一个git存储库。然后我更改了分支(让我们称之为my-branch),提交,推送并发送了一个Pull请求。

由于主更改产生冲突,上游存储库已更改且我的PR无效。

我该如何处理我的分支以解决冲突并更新公关?

我尝试从上游主服务器获取更改到本地主服务器,然后将我的分支机构重新定位到本地主服务器:

git checkout master
git fetch upstream
git merge upstream/master
git push origin master
git checkout my-branch
git rebase master

问题在于,当我解决冲突并提交/推送更改时,来自上游的所有提交也都包含在PR中,就好像我已经进行了这些更改一样。所以,再一次,我应该怎样继续真正“重新定义”我的分支和PR,所以我可以安全地更改并承诺PR只有我改变的文件?

1 个答案:

答案 0 :(得分:2)

让我们有这些约定:

  • upstream是分叉项目的远程名称
  • origin是你的github fork的远程名称

以下是使用upstream/master的新提交更新功能分支的正确worflow:

  • git checkout my-branch //切换到您的功能分支
  • git fetch --all //从所有声明的遥控器中获取新提交
  • git rebase upstream/master //将您的功能分支重新定位到上游/主站的最后一次提交
  • git push -f origin my-branch //覆盖您的远程my-branch(由于rebase重写提交,因此必须提供)

您的PR应使用my-branch

的新提交进行更新