使用所有远程分支更新所有本地分支

Far*_*rid 5 git github git-pull git-fetch

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

这是我当地的分支机构:

client-side-js-framework
client-side-js-framework-2
client-side-js-framework-3
handlebars
master
Run Code Online (Sandbox Code Playgroud)

还有我的远程分支:

client-side-js-framework
handlebars
master
no-network-connection
Run Code Online (Sandbox Code Playgroud)

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

client-side-js-framework
handlebars
master
no-network-connection
Run Code Online (Sandbox Code Playgroud)

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

tor*_*rek 5

最有可能的是,你应该运行:

\n\n
git fetch origin\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
git checkout handlebars\n
Run Code Online (Sandbox Code Playgroud)\n\n

你的 Git 会搜索你的本地名称handlebars,找不到它,再搜索一些,看看是否有一个名称,如origin/handlebars等等upstream/handlebars(每个可能的远程名称都有一个)。

\n\n

只要恰好有一个这样的名称,您的 Git 就会说:啊哈,我应该使用与远程跟踪名称相同的提交来创建本地名称。handlebarsorigin/handlebars 在那一刻,您将获得一个名为handlebars匹配的本地分支origin/handlebars,Git 将检查它,然后您就可以开始工作了。没有必要像一组球链一样拖着六个未使用的本地名称。

\n\n

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

\n\n
git fetch origin \'refs/heads/*:refs/heads/*\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

会工作\xe2\x80\x94,但不要这样做(参见球和链链接)。

\n\n

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

\n