我们假设GitHub上有一个存储库someone/foobar
,我将其分配到me/foobar
。
如何将新提交从父存储库直接提取到我的分支,而不必add a separate remote 并记得定期从那里提取?
目标是:
git pull
从父存储库中获取git push
将所有内容发送到我的分机答案 0 :(得分:418)
打开分叉的Git存储库 me / foobar 。
点击比较:
您将收到通知:
没有什么可比较的。
某人:主人与来自 me:master 的所有提交都是最新的。尝试切换基础进行比较。
点击此页面上切换基础:
然后你可以在分叉之后看到对某人/ foobar 所做的所有提交。
点击创建提款请求:
为拉取请求提供标题和描述,然后单击创建拉取请求。
在下一页上,滚动到页面底部,然后点击合并提取请求和确认合并。
您的Git存储库 me / foobar 将会更新。
编辑:此处显示了rebase选项:
答案 1 :(得分:28)
git remote set-url origin git@github.com:someone/foobar
git remote set-url origin --push git@github.com:me/foobar
但有一点需要注意:
如果您是唯一一个对叉子进行更改的人,这是完美的
但是,如果与其他人共享,您可能需要从fork中提取,在这种情况下a separate remote是唯一的解决方案。
编辑:
实际上,你可以 git pull git@github.com:me/foobar
,这可以消除警告
您可以选择哪种更容易记住。
答案 2 :(得分:8)
我使用一个相当简单的方法使用GitHub Web UI 来做到这一点:
me/foobar
)答案 3 :(得分:3)
最近(2021 年 5 月上旬)GitHub 网站为此提供了一个一键式按钮:
<块引用>我无法抗拒点击它的诱惑。
<块引用>有关此新功能的信息,请参阅 GitHub's official Tweet。
答案 4 :(得分:0)
答案 5 :(得分:0)
我不知道如何在不添加另一个远程控制器的情况下完成此操作,但是我总是将我从中分叉的存储库添加为upstream
远程控制器,因此我可以简单地做到这一点:
git branch -a|grep remotes/upstream| while IFS="/" read p r b; do echo Syncing $r/$b to origin/$b; git push origin $r/$b:refs/heads/$b; done
这将同步所有分支,包括。创建新分支(删除refs/heads/
仅更新现有分支)。如果您的任何分支偏离了该分支,则会引发错误。
答案 6 :(得分:0)
"Pull" app是一种自动设置并忘记的解决方案。它将把fork的默认分支与上游存储库同步。
访问URL,单击绿色的“安装”按钮,然后选择要启用自动同步的存储库。
该分支每小时直接在GitHub上更新一次,在您的本地计算机上,您需要拉主分支以确保本地副本是同步的。
答案 7 :(得分:0)
我会简单地使用:
git pull git@github.com:someone/foobar <branch_name> && git push
答案 8 :(得分:0)
访问https://github.com/me/foobar/compare/master...someone:master(当然用对应的repo和用户名替换me
、someone
和foobar
)
如果您看到绿色文本 Able to merge
,请按创建拉取请求
在下一页上,滚动到页面底部并点击合并拉取请求和确认合并。