【问题标题】:Update all local branches with all remote branches使用所有远程分支更新所有本地分支
【发布时间】:2018-04-27 05:03:18
【问题描述】:

如何用所有远程分支覆盖所有本地分支?

这是我当地的分支机构:

client-side-js-framework
client-side-js-framework-2
client-side-js-framework-3
handlebars
master

还有我的远程分支:

client-side-js-framework
handlebars
master
no-network-connection

我希望我的本地分支能够镜像我的远程分支,因为我的远程分支是最新的。换句话说,我当地的分支机构应该是:

client-side-js-framework
handlebars
master
no-network-connection

这可以通过一个(或两个)命令来完成,而不是基本上删除我的本地 repo,然后重新克隆它吗?

【问题讨论】:

    标签: git github git-pull git-fetch


    【解决方案1】:

    很可能,您应该运行:

    git fetch origin
    

    然后简单地删除(大部分或全部)本地分支。下次运行时,例如:

    git checkout handlebars
    

    您的 Git 将搜索您的本地名称 handlebars,找不到它,再搜索一些以查看是否只有一个名称,例如 origin/handlebars 和 upstream/handlebars 等等(每个可能的远程一个名称)。

    只要恰好有一个这样的名称,你的 Git 就会说:啊哈,我应该使用 same commit 创建本地名称 handlebars远程跟踪名称origin/handlebars。 在那一刻,您将获得一个名为handlebars 的本地分支,它与origin/handlebars 匹配,Git 将检查它,您就可以开始工作了。没有必要像a set of balls-and-chains 这样拖着六个未使用的本地名称。

    如果您确实需要更新每个分支,则必须使用循环,每个分支使用一个更新命令来执行适当的合并和推送,除非它们都是快进非真正合并操作,在哪种情况:

    git fetch origin 'refs/heads/*:refs/heads/*'
    

    会起作用,但不要这样做(见球和链节)。

    (如果您确实有多个使用相同名称的遥控器会有点棘手。在这种情况下,git checkout --track origin/handlebars 将达到预期的结果。同时,让git fetch删除本地名称,但我认为可以使用--prune。)

    【讨论】:

    • 我实际上认为这是一个链接到名为“一组球和链”的文档 [讽刺地]。我没有意识到这是一个图像。打的好。我最终删除了本地 repo 并重新克隆它,但我喜欢你的回答,并且下次会尝试记住这样做。
    【解决方案2】:

    基本上git fetch origin 将更新您的本地分支,并将额外的分支添加到您的本地 repo 中,这在远程可用。

    替代解决方案是

    1. git checkout client-side-js-framework
    2. git pull
    

    就是这样:)

    【讨论】:

      猜你喜欢
      • 2010-09-27
      • 2022-11-05
      • 1970-01-01
      • 2023-01-07
      • 2013-03-17
      • 2019-10-30
      • 2016-09-12
      • 2013-04-30
      • 2013-11-15
      相关资源
      最近更新 更多