自动更新本地 GIT 仓库

随着开源软件的兴起,尤其是 GITHUB 的蓬勃发展,很多开源软件都通过 GIT 进行管理,在我的计算机上就一个目录是我关注并使用的开源软件 GIT 本地副本,如何定期更新这些仓库,一个个的更新太累人了,那不是一个合格的程序员干的活,肯定要写脚本来处理啦,首先是在 windows 平台上,那就用 bat 来处理吧,随说没有 shell 脚本强大,对付目前我的需求还是可以的。

考虑到开源仓库的目录包含不同的层次,例如在 Images 目录下就有各种开源的图形库,因此要能够自动找出所有 GIT 仓库,哪怕是在子目录里面,然后对每一个 GIT 仓库进行 git pull 操作,这样一个批处理直接搞定

下面就是完成的批处理文件

@ IF $%1 == $ GOTO GITDIR

:UPDATE
@ SET REPOS=%1
@ CD %REPOS:~0,-5%
@ ECHO Pulling [%CD%] ...
@ git pull
@ GOTO FINISH

:GITDIR
@ FOR /F %%I IN ('DIR /B /S /AD .git') DO @ CALL %0 %%I

:FINISH
@ CD %~DP0

其中需要注意的是

1、找到 GIT 仓库,使用 DIR 查找 .git 目录的方法找出所有的 git 仓库

2、进入正确的目录,使用 @ CD %REPOS:~0,-5% ,将目录字符串后面的 /.git 去除掉

3、更新仓库后需要回到批处理文件所在的目录

当然可以把更新仓库的代码直接写在 FOR 语句里面,这就是个人喜好问题了

原文地址:https://www.cnblogs.com/WonKerr/p/auto_pull_git_repos_in_subdir.html