如何覆盖所有远程分支的所有本地分支?
以下是我当地的分支机构:
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
这可以用一个(或两个)命令完成,而不是基本上删除我的本地仓库,并重新克隆它吗?
答案 0 :(得分:3)
最有可能的,你应该跑:
git fetch origin
然后只需删除(大部分或全部)本地分支。下次你跑,例如:
git checkout handlebars
您的Git会搜索您的本地名称handlebars
,找不到它,再搜索一下,看看是否只有一个名称,如origin/handlebars
和upstream/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
这就是全部:)