Mac/Linux: 一条命令自动递归拉取当前下所有git仓库的代码

简介: 随着仓库越来越多,特别是公司的一大堆子仓库....每次都要手动fetch或者rebase,对我来说挺痛苦的~~~所以我选择了用脚本来解决我的痛点...第二版(2020-11-26): www.yuque.com/crper/blog/…

网络异常,图片无法展示
|


前言


随着仓库越来越多,特别是公司的一大堆子仓库....


每次都要手动fetch或者rebase,


对我来说挺痛苦的~~~


所以我选择了用脚本来解决我的痛点...


第二版(2020-11-26): www.yuque.com/crper/blog/…


效果图


网络异常,图片无法展示
|


注意点


  • 仓库需要至少关联一个远程分支
  • 拉取的仓库有改动记得提前stash(干净更好)


虽然这两个问题没解决也问题不大,


只是抛出git的一些异常警告,并不会中断其他仓库的拉取


实现代码


multiple-git-pull.sh


递归匹配


#!/bin/zsh
find . -type d -name .git -exec sh -c "cd \"{}\"/../ && pwd && git pull --rebase" \;
# 命令剖析
# 没有控制目录层级就会一直往下找!
# 就是寻找当前及子目录为.git的,找到就执行一条sh(sh -c是把紧接着的字符串当做命令解析)
# shell 就是依次进入到匹配项
## pwd 打印当前路径(cd 后就是进去的路径)
## git pull --rebase(就是变基远程代码到本地,保证记录的一致性!)


限制查找层级


# 当然find还有很多实用的参数,我们可以更加细化的配置,
# 比如聚目录查找层级: maxdepth(最大)  , mindepth(最小) 
find . -maxdepth 3 -type d -name .git  -exec sh -c "cd \"{}\"/../ && pwd && git  pull --rebase" \;


# 然后在对应的shell的配置文件写个alias...
# 代码也很简单,就是一些Linux的基础语法,
# 执行用户家目录对应的脚本路径..
# .是一种姿势
# shell(bash / zsh) + scripts也是一种
# 还有一两种,但是常用的基本上面两种
# 若是不能执行记得chmod a+x scripts(赋予脚本执行权限)
alias mrf=". ~/Code/multiple-git-pull.sh"
目录
相关文章
|
2天前
|
安全 Linux 测试技术
|
2天前
|
安全 Linux Windows
Linux中Shutdown命令使用介绍
Linux中Shutdown命令使用介绍
|
3天前
|
缓存 关系型数据库 Linux
Linux目录结构:深入理解与命令创建指南
Linux目录结构:深入理解与命令创建指南
|
3天前
|
数据挖掘 Linux vr&ar
Linux命令实战:解决日常问题的利器
Linux命令实战:解决日常问题的利器
|
3天前
|
NoSQL Linux Redis
Redis的介绍,以及Redis的安装(本机windows版,虚拟机Linux版)和Redis常用命令的介绍
Redis的介绍,以及Redis的安装(本机windows版,虚拟机Linux版)和Redis常用命令的介绍
17 0
|
3天前
|
安全 Linux Shell
linux基础命令详解
linux基础命令详解
9 0
|
4天前
|
存储 安全 算法
【Linux | C++ 】基于环形队列的多生产者多消费者模型(Linux系统下C++ 代码模拟实现)
【Linux | C++ 】基于环形队列的多生产者多消费者模型(Linux系统下C++ 代码模拟实现)
21 0
|
4天前
|
算法 Linux 数据安全/隐私保护
【Linux | C++ 】生产者消费者模型(Linux系统下C++ 代码模拟实现)
【Linux | C++ 】生产者消费者模型(Linux系统下C++ 代码模拟实现)
10 0
|
4天前
|
Linux
Linux常用命令2
Linux常用命令2
6 0
|
4天前
|
Linux
Linux常用命令1
Linux常用命令1
10 0