【问题标题】:Git Merge with Remote MasterGit 与远程 Master 合并
【发布时间】:2016-07-25 22:13:05
【问题描述】:

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

  1. fork 回购和clone 私人副本
  2. git checkout -b feature-branch 分叉回购
  3. 将提交推送到此分支
  4. 打开拉取请求以将local:feature-branch 合并到remote:master

这一切都很好,但是我最近遇到了一个问题,当合并冲突迫使我将 master 合并到我的功能分支中以便可以接受拉取请求时。

命令通常是:

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

但是当我完成这些步骤时,git 显示Already up-to-date.,这是有道理的。因为我处于 repo 的分叉版本中,所以我的副本将永远无法获得对 master 的最近远程更改。

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

我该如何解决他的问题?

非常感谢您的帮助!

【问题讨论】:

  • this 是您要找的吗?
  • 也许吧,但我觉得这个工作流程很常见,应该有其他步骤。

标签: git github merge


【解决方案1】:

命令通常是:

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

嗯,问题出在第 2 行。

git pull origin master

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

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

其中&lt;the-remote-that-isnt-origin&gt; 是当您运行git remote show 时显示的不是origin 的遥控器。

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

git checkout your-branch
git rebase master

【讨论】:

    【解决方案2】:

    您要做的是将远程仓库的master 合并到您的feature-branch 中,这样您的分支就可以与远程master 保持同步,而不是您自己的origin master。

    git checkout feature-branch
    git pull remote master
    

    【讨论】:

    • 是的,这就是我的想法。这很糟糕,因为我不控制远程仓库。而且,更糟糕的是,repo 的所有者并不拥有我的分叉。所以合并永远不会发生。
    • 你可以一开始就分叉它的事实意味着你至少可以读取它,这意味着你可以从他们的主人那里拉出来。 git remote add theirs git@github.com:their/repo.gitgit pull theirs master
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-21
    相关资源
    最近更新 更多