我克隆了一个包含许多分支的Git存储库。然而,git分支仅显示一个:
$ git branch
* master
我如何在本地拉所有分支,所以当我执行git分支时,它会显示以下内容?
$ git branch
* master
* staging
* etc...
我克隆了一个包含许多分支的Git存储库。然而,git分支仅显示一个:
$ git branch
* master
我如何在本地拉所有分支,所以当我执行git分支时,它会显示以下内容?
$ git branch
* master
* staging
* etc...
当前回答
下面是接受答案中提供的一行程序的Perl版本:
git branch-r | perl-e'while(<>){chop;my$remote=$_;my($local)=($remote=~/origin\/(.*)/);打印“git branch--track$local$remote\n”;}'>一些输出文件
如果愿意,可以将输出文件作为Shell脚本运行。
我们无意中删除了Stash项目存储库。幸运的是,就在意外损失之前,有人制造了一个叉子。我将叉子克隆到了我的本地(将省略我是如何做到这一点的细节)。当我把叉子完全放在本地时,我跑了一条单行道。我修改了远程服务器的URL(在我的例子中是源URL),以指向我们要恢复到的目标存储库:
gitremoteseturl-origin<remoteurl>
最后将所有分支都推到原点,如下所示:
git push—所有原点
我们又回到了生意上。
其他回答
您可以通过以下方式获取所有分支:
git fetch --all
or:
git fetch origin --depth=10000 $(git ls-remote -h -t origin)
如果您对存储库进行了浅处理,--depth=10000参数可能会有所帮助。
要拉动所有分支,请使用:
git pull --all
如果上面的命令不起作用,那么在上面的命令前面加上:
git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
因为remote.origin.fetch在提取时只能支持特定的分支,特别是当您使用--single分支克隆回购时。通过:git-config remote.origin.fetch检查此项。
之后,您应该可以签出任何分支。
另请参见:
如何获取所有远程分支?如何克隆Git中的所有远程分支?
要将所有分支推送到远程,请使用:
git push --all
最终--镜像到镜像所有引用。
如果您的目标是复制存储库,请参阅:在GitHub复制存储库文章。
克隆存储库时,实际上会下载分支的所有信息,但分支是隐藏的。使用命令
$ git branch -a
您可以显示存储库的所有分支,并使用以下命令
$ git checkout -b branchname origin/branchname
然后,您可以一次手动下载一个。
然而,有一种更干净、更快的方法,尽管它有点复杂。您需要三个步骤来实现这一点:
第一步在计算机上创建一个新的空文件夹,并从存储库克隆.git文件夹的镜像副本:$cd~/桌面&&mkdir my_repo_folder&&cd my_repo-folder$git克隆--镜像https://github.com/planetoftheweb/responsivebootstrap.git.git位myepofolder文件夹中的本地存储库仍然是空的,现在只有一个隐藏的.git文件夹,您可以通过终端的“ls-alt”命令看到它。第二步通过将git配置的布尔值“裸”切换为false,将此存储库从空(裸)存储库切换为常规存储库:$git-config--bool core.bare false第三步获取当前文件夹中的所有内容,并在本地计算机上创建所有分支,因此这是一个正常的回购。$git重置--硬
现在您只需键入命令gitbranch,就可以看到所有的分支都已下载。
这是一种快速的方法,您可以一次克隆一个包含所有分支的git存储库,但这不是您想用这种方法为每个项目做的事情。
您需要创建跟踪远程分支的本地分支。
假设您只有一个名为origin的远程,此代码片段将为所有远程跟踪分支创建本地分支:
for b in `git branch -r | grep -v -- '->'`; do git branch --track ${b##origin/} $b; done
之后,gitfetch-all将更新远程分支的所有本地副本。
此外,gitpull-all将更新您的本地跟踪分支,但根据您的本地提交以及“合并”配置选项的设置方式,它可能会创建一个合并提交、快进或失败。
确保所有远程分支都可以在.git/config文件中获取。
在本例中,只有原始/生产分支是可获取的,即使您尝试执行git fetch,除了获取生产分支之外,一切都不会发生:
[origin]
fetch = +refs/heads/production:refs/remotes/origin/production
该行应替换为:
[origin]
fetch = +refs/heads/*:refs/remotes/origin/*
然后运行git fetch等。。。
玩git时要小心,循序渐进。
$ git remote update //This will update your local
$ git branch -a //This will list all the branches(After updating you can now
see the new branch in the list)
$ git checkout your_branch_name