【问题标题】:How do I sync all new upstream branches with my fork?如何将所有新的上游分支与我的 fork 同步?
【发布时间】:2018-05-07 18:09:14
【问题描述】:

前段时间我分叉了一个 git repo。从那时起,master 分支有了几个新的提交。 https://help.github.com/articles/syncing-a-fork/ 解释了如何将上游 master 分支与本地 master 分支同步,然后将这些提交推送到我的 fork。

但是它没有提到如何同步新的上游分支。当我最初在 github 上 fork 项目时,它看起来像是带来了所有当前的分支。

我已经看到有关如何一次同步一个分支的说明。有什么方法可以一次同步所有新旧分支?

我还没有对我的 fork 做出任何承诺。因此,我正在寻找快进同步。

编辑: 另一种说法:

我想要

git ls-remote origin

匹配

git ls-remote upstream

这将包括分支和标签。

【问题讨论】:

  • 你想完成什么?使用 git 时,您可以拥有多个远程存储库,但不确定您是否需要拥有 fork 中的每个分支以及原始存储库。
  • 上游仓库的存档。包括所有分支。

标签: git github


【解决方案1】:

但是它没有提到如何同步新的上游分支

您需要做的就是:

git fetch upstream

这将获取或更新所有上游分支并将它们存储在您的本地存储库中,在上游命名空间中。

你可以看到这些分支:

git branch -avv

它不允许我将所有上游分支推送到原点。

为此,您需要根据要推送到源的任何上游分支创建本地分支:

git branch abranch upstream/abranch
gut push -u origin abranch 

在“git - create local branch from existing remote branch”查看更多信息。

要为所有个分支这样做,请参阅“Pull all branches from remote through it's mirror bare remote”。
或者,更好的是:“Track all remote git branches as local branches”。
只需使用“upstream”代替origin

【讨论】:

  • 这将获取upstream refspecs,但它不允许我将所有上游分支推送到origin
  • 有什么办法可以一次性对所有上游分支执行此操作,而不是一次一个?
  • @Gabriel 这个答案有什么遗漏吗?
  • 另外,如果要推送在git fetch upstream 中检索到的新标签,请执行git push --tags
  • @DavidH 我同意。我还在stackoverflow.com/a/3745250/6309stackoverflow.com/a/4886153/6309 中提到了--follow-tags
【解决方案2】:

执行以下操作:

  1. 列出您的所有远程存储库以确认您是否有上游(父/原始)存储库:

    git remote -v

  2. 如果您没有看到原始远程存储库,请通过键入以下命令来添加它。这通常被称为“上游”,不像“起源”是您的分叉远程存储库。

    git remote add upstream <path of the original remote respository>

  3. 验证它是否已添加为名为“上游”的远程,并确认它已为“获取”和“推送”操作列出。

    git remote -v

  4. 在本地获取新(在你的 fork 之后)创建的分支:

    git fetch upstream

  5. 列出所有分支以确认可以看到新创建的分支

    git branch -a

现在您可以在本地签出分支以根据需要对其进行处理。

【讨论】:

    猜你喜欢
    • 2015-07-19
    • 2019-03-29
    • 2016-07-16
    • 2011-05-23
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 2015-12-26
    相关资源
    最近更新 更多