与远程主分支合并的 Git Merge

3
我参与了许多开源项目。通常情况下,由于外部贡献者没有对他们所贡献的存储库的写入权限,因此工作流程如下:
  1. 复制存储库并 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. ,这很有道理。因为我在存储库的分叉版本中工作,我的副本永远无法获取 master 的最新远程更改。

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

我该如何解决这个问题呢?

非常感谢您的帮助!


这是您要找的吗?链接 - intboolstring
也许吧,但我感觉这个工作流程非常常见,应该还有其他相关步骤。 - James Taylor
2个回答

1

The command would typically be:

git checkout master
git pull origin master
git checkout feature-branch
git merge master
好的,问题应该出现在第二行。
git pull origin master

origin 远程设置为你的 fork。如果你运行以下命令:

git remote show origin

something like

* 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>是运行git remote show时显示为非origin的远程仓库。

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

git checkout your-branch
git rebase master

1
你需要做的是将远程仓库的master合并到你的feature-branch中,以使你的分支与远程master保持最新状态,而不是你自己的origin master。
git checkout feature-branch
git pull remote master

是的,这正是我所想的。这很糟糕,因为我无法控制远程仓库。更糟糕的是,仓库的所有者不拥有我的分支。因此,合并永远不可能发生。 - James Taylor
你能够fork它,这意味着你至少有读取权限,也就是说你可以从他们的主分支pull代码。 git remote add theirs git@github.com:their/repo.git git pull theirs master - Nop Jiarathanakul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接