如何在不添加单独的遥控器的情况下保持我的分叉同步?

时间:2014-01-08 00:26:20

标签: git github

我们假设GitHub上有一个存储库someone/foobar,我将其分配到me/foobar

如何将新提交从父存储库直接提取到我的分支,而不必add a separate remote 并记得定期从那里提取

目标是:

  • git pull从父存储库中获取
  • git push将所有内容发送到我的分机

9 个答案:

答案 0 :(得分:418)

打开分叉的Git存储库 me / foobar

点击比较

Here is a sample image of the page

您将收到通知:

  

没有什么可比较的。
  某人:主人与来自 me:master 的所有提交都是最新的。尝试切换基础进行比较。

点击此页面上切换基础

Here is an example on the page

然后你可以在分叉之后看到对某人/ foobar 所做的所有提交。

点击创建提款请求

Here is a sample page

为拉取请求提供标题和描述,然后单击创建拉取请求

在下一页上,滚动到页面底部,然后点击合并提取请求确认合并

您的Git存储库 me / foobar 将会更新。

编辑:此处显示了rebase选项:

enter image description here

答案 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 来做到这一点:

  1. 打开原始Git存储库(而不是分叉的Git存储库me/foobar
  2. 跳转到src文件夹,然后打开要更改的文件
  3. 单击笔图标。它将自动在您的个人分支中创建一个名为" patch-1"基于主存储库的当前版本: Enter image description here
  4. 享受! Enter image description here

答案 3 :(得分:3)

最近(2021 年 5 月上旬)GitHub 网站为此提供了一个一键式按钮:

<块引用>

我无法抗拒点击它的诱惑。

<块引用>

After

有关此新功能的信息,请参阅 GitHub's official Tweet

答案 4 :(得分:0)

另一种选择是使用GitHub for Mac中的Update from upstreamRepoName/master按钮(我假设GitHub用于Windows)。

Enter image description here

答案 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上更新一次,在您的本地计算机上,您需要拉主分支以确保本地副本是同步的。

也在https://stackoverflow.com/a/58965171/946850中回答。

答案 7 :(得分:0)

我会简单地使用:

git pull git@github.com:someone/foobar <branch_name> && git push

答案 8 :(得分:0)

  1. 访问https://github.com/me/foobar/compare/master...someone:master(当然用对应的repo和用户名替换mesomeonefoobar

  2. 如果您看到绿色文本 Able to merge,请按创建拉取请求

  3. 在下一页上,滚动到页面底部并点击合并拉取请求确认合并

相关问题