我来自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只有我改变的文件?
答案 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