我为许多开源项目做出了贡献。通常,由于外部贡献者对他们贡献的存储库没有写入权限,因此工作流程如下:
- fork 存储库并
克隆
一个私有(private)副本 git checkout -b feature-branch
在 fork 的 repo 上- 将提交推送到该分支
- 打开 pull 请求以将
local:feature-branch
merge 到remote:master
这一切都很好,但我最近遇到了一个问题,当时存在 merge 冲突,迫使我将 master
merge 到我的功能分支中,以便可以接受 pull 请求。
命令通常是:
git checkout master
git pull origin master
git checkout feature-branch
git merge master
但是当我完成这些步骤时,git
显示 Already up-to-date.
,这是有道理的。因为我在 repo 的 fork 版本中,所以我的副本将永远无法获得对 master
的最近远程更改。
所以看起来因为我正在处理无法 merge 的 fork 副本,所以我的 PR 永远无法 merge 。
我怎样才能解决他的问题?
非常感谢您的帮助!
最佳答案
The command would typically be:
git checkout master git pull origin master git checkout feature-branch git merge master
嗯,问题出在第二行。
git pull origin master
origin
Remote 设置为您的 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
会出现。
话虽如此,您必须从 fork Remote 中 pull 出。运行
git remote show
这将显示所有 Remote 。
check out 到你的master分支然后运行
git pull <the-remote-that-isnt-origin> master
哪里<the-remote-that-isnt-origin>
是不是显示的 Remote origin
当你运行 git remote show
.
现在,大多数开源项目不喜欢 merge 提交,所以我建议 rebasing .
git checkout your-branch
git rebase master
关于Git 与 Remote Master merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36435368/