Git Merge与Remote Master

时间:2016-04-05 19:27:55

标签: git github merge

我为许多开源项目做出了贡献。通常,由于外部贡献者没有对他们所贡献的存储库具有写入权限,因此工作流程如下:

  1. 将repo和clone私人副本分开
  2. 分叉回购
  3. git checkout -b feature-branch
  4. 将提交推送到此分支
  5. 打开拉取请求以将local:feature-branch合并到remote:master
  6. 这一切都很好,但是当合并冲突迫使我将master合并到我的功能分支中时,我最近遇到了一个问题,因此可以接受拉取请求。

    命令通常是:

    git checkout master
    git pull origin master
    git checkout feature-branch
    git merge master
    

    但是,当我完成这些步骤时,git会显示Already up-to-date.,这是有道理的。因为我在repo的分叉版本中,我的副本永远无法将最近的远程更改发送到master

    所以看起来因为我正在处理一个无法合并的分叉副本,我的PR永远不可合并。

    我如何解决他的问题?

    非常感谢你的帮助!

2 个答案:

答案 0 :(得分:1)

您需要做的是将远程仓库的master合并到feature-branch,以便您的分支机构与远程master保持同步,而不是您的拥有origin主人。

git checkout feature-branch
git pull remote master

答案 1 :(得分:1)

  

命令通常是:

git checkout master
git pull origin master
git checkout feature-branch
git merge master

嗯,问题出在第二行。

git pull origin master

origin遥控器设置为你的前叉。如果您运行类似

的内容
git remote show origin

类似

* remote origin
  Fetch URL: https://github.com/YOUR-NAME/repo.git
  Push  URL: https://github.com/YOUR-NAME/repo.git
  HEAD branch: master

会出现。

话虽如此,你必须从分叉的遥控器中拉出来。运行

git remote show

将显示所有遥控器。

结帐到您的主分行,然后运行

git pull <the-remote-that-isnt-origin> master

其中<the-remote-that-isnt-origin>是您运行origin时显示的不是git remote show的遥控器。

现在,大多数开源项目都不喜欢合并提交,所以我建议rebasing

git checkout your-branch
git rebase master