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

时间:2017-11-14 09:53:26

标签: git github git-pull git-fetch

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

以下是我当地的分支机构:

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

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

2 个答案:

答案 0 :(得分:3)

最有可能的,你应该跑:

git fetch origin

然后只需删除(大部分或全部)本地分支。下次你跑,例如:

git checkout handlebars

您的Git会搜索您的本地名称handlebars,找不到它,再搜索一下,看看是否只有一个名称,如origin/handlebarsupstream/handlebars等等on(每个可能的遥控器一个)。

只要完全一个这样的名字,你的Git就会说:啊哈,我应该使用创建本地名称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完成。)

答案 1 :(得分:0)

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

替代解决方案是

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

这就是全部:)