Git批量拉取

2017/04/06 Git

最近发现我的 git 仓库越来越多了!因为很多仓库都是开源组织维护的,还有一些是资源库,用来多台机器共享使用的,因此需要经常保持最新。由于一个个拉太浪费时间了,所以需要一个批量拉取这些 git 仓库的工具。在网上找了一圈,找到一个 python 写的开源工具 gitup,看介绍挺满足我的需要,但是在 win7 下测试总是卡死,无法运行,只能放弃。于是决定自己写一个,最初是用 bash 来写,后来发现 git bash 内部模拟了 linux 环境,因此决定用熟悉的 shell 脚本来写。

一、git 仓库整理

我首先将我的 git 仓库做了一次整理,将其放置到了同一个目录,并按照仓库来源进行了分类,之前的 git 仓库东一个西一个,东西多了很不好找。整理了以后看起来舒服多了,效果如下:

D:\01_git
├─github
│  ├─bjddd192.github.io
│  ├─dongchuan.github.io
│  ├─gaohaoyang.github.io
│  └─mritd.github.io
├─gitlab
│  ├─eyd-om-docker
│  ├─eyd-om-docker.wiki
│  ├─eyd-om-private
│  ├─eyd-om-private.wiki
│  ├─eyd-om-resources
│  └─eyd-om-resources.wiki
└─oschina
    ├─doc
    └─shell

二、git_pull_all.sh

不废话,直接上脚本:

#!/bin/bash

# 获取 git 仓库路径
find `pwd` -type d -name ".git" > git_dir.txt
sed -i "s/\/.git/\//g" git_dir.txt

# 循环文件中的路径拉取数据
while read LINE
do
	echo $LINE
	cd "$LINE"
	git pull
done < git_dir.txt

将此脚本放置在根目录(如:D:\01_git)下,然后在 git bash 中执行即可实现批量拉取功能。

三、注意事项

这里放置的 git 仓库都要是可以免密获取的,如使用 ssh 协议或者 https 的公共仓库。

转载请注明出处,本文采用 CC4.0 协议授权,版权归 Mars丶小石头 所有。

Search

    Table of Contents