一行代码实现github多分支下载

实现代码

如果您着急使用,代码如下:

mkdir -p ../new; for b in `git branch -r | grep -v -- '->'`; do git branch --track ${b##origin/} $b; mkdir ../new/${b##origin/}; git checkout ${b##origin/}; git pull; cp -rf ./ ../new/${b##origin/}; rm -rf ../new/${b##origin/}/.git; done

注意:

  1. 代码不能换行,这是一行代码;
  2. 下载文件会放在要下载目录 上级 的 new 文件下;
  3. 改动位置,只需要改动 ../new 为要存的路径(不能是本仓库下的任何路径)
  4. rm -rf ../new/${b##origin/}/.git 该语句会删除每个分支下的.git文件。

实现思路

单分支下载

此处不再过多赘述。

git clone [url]
# 查看所有远程分支
git branch -r
# 根据分支名称切换分支
git checkout [分支名]
# 拉取
git pull

多分支下载

经过搜索,大部分都是上述代码,并没有实现一次多分支下载任务。

经过不懈努力,看到了引用的此篇文章 如何使用Git克隆GitHub仓库的所有分支,让我突然醒悟,命令可以和shell一起使用。

for b in `git branch -r | grep -v -- '->'`; do git branch --track ${b##origin/} $b; done

这句代码在文章中有详细的解释,作用就是讲分支信息去掉重复的 origin存到 ./git/config中,即将远程分支存到本地。

思路一【失败】

第一想法,在获取分支信息加入 .git/config/的同时,在该目录下同时下载同名文件夹,然后进入该文件夹,进行拉取信息。

因为没做出来,就不贴图了,将代码放这。

for b in `git branch -r | grep -v -- '->'`; do git branch --track ${b##origin/} $b; mkdir ${b##origin/}; cd ${b##origin/}; git checkout ${b##origin/}; git pull; cd ..; done

失败的原因也只是懂一个大概,对git使用也没有深入过 ,好像是因为,在本地仓库文件夹下创建了文件夹,本地存在,但是仓库并不存在,如果进入进行拉取等系列操作,就会与远程仓库的版本不一致,因此并没有办法进行,需要重新提交等操作,让本地仓库与远程仓库保持一致。

一顿操作,没有解决。毕竟也不是我的仓库,而且我只是取资料,并不是提交修改远程仓库,这样不好。

思路二【可行】

其实回到那篇文章,那篇文章让我知道,git命令可以与 linux命令一起操作,那既然如此,我不修改本地仓库不就好了。

因此,采用迂回操作,目录创建在其他地方,让拉取下来的文件复制过去。如此循环,测试表明可行

代码如下:

mkdir -p ../new; for b in `git branch -r | grep -v -- '->'`; do git branch --track ${b##origin/} $b; mkdir ../new/${b##origin/}; git checkout ${b##origin/}; git pull; cp -rf ./ ../new/${b##origin/}; rm -rf ../new/${b##origin/}/.git; done

注意:

  1. 代码不能换行,这是一行代码;
  2. 下载文件会放在要下载目录 上级 的 new 文件下;
  3. 改动位置,只需要改动 …/new 为要存的路径(不能是本仓库下的任何路径)
  4. rm -rf ../new/${b##origin/}/.git 该语句会删除每个分支下的.git文件。

图略。

参考链接

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸落log

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值