【问题标题】:Does Github have a way to synchronize your fork with cloned repo?Github 有办法将你的分叉与克隆的 repo 同步吗?
【发布时间】:2015-03-17 05:19:03
【问题描述】:

Github 是否提供了一种将 Github 存储库的分支与源存储库中的更改同步的方法?

例如说我 fork 一个 repo,并将 master 重命名为 upstream,我想与源 repo 的更改保持同步,Github 可以将我的 upstream 与源 repo 的 master 同步定期?

【问题讨论】:

  • 你对源代码库有写权限吗? (不建议在源存储库上重命名上游存储库,因为您可能有下游消费者。)
  • 我无权访问源代码库,也不打算访问。主要是为了跟上原所有者对其进行的更新。

标签: git github


【解决方案1】:

不,github 不提供。相反,您可以在本地实现。

首先,创建本地存储库,添加您自己的远程并检索它。

git init
git remote add origin git@github.com:<username>/<repo>.git
git pull origin master

下一步,向您的存储库添加一个远程分支,该分支指向您从中派生出的原始存储库。

git remote add --track master <repo-name> git://github.com/<username>/<source-repo>.git

请注意,master 将是您要在分叉存储库中跟踪的分支。 &lt;repo-name&gt; 由您决定。如果您想验证,只需运行git remote,您必须看到&lt;repo-name&gt;origin 作为输出。

现在,您已准备好从原始存储库中获取所有新更改。

git fetch <repo-name>

将创建一个名为 &lt;repo-name&gt;/master 的新分支,其中包含最新更改。

【讨论】:

  • 这种做法是不是意味着I do not fork源repo直接在Github上,但是我创建的Github repo一开始是空的,我先在本地克隆源repo,设置跟踪引用到它,然后检查我自己的工作分支,然后将两个分支都推送到 Github,这样 Github 就会同时显示原始远程和我自己的工作分支?
  • 没有。您必须在 github 上创建一个 repo 并创建一个本地链接到 github repo 的空(或使用另一个)。然后你将你的分叉存储库与你选择的另一个链接(空或不)。
【解决方案2】:

是的,您可以同步它——这称为合并。您可以随时将您的分支与主分支合并,但如果有任何冲突(不兼容) - 您将不得不手动修复它们。

例如,在您的源文件夹中,假设 Github 已经配置:

git checkout upstream
git merge master

正如我已经提到的,如果您更改了分支中的某些内容,并且 master 分支更改了相同的代码行 - 自动合并将不起作用,您必须手动决定要保留哪个版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多