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"
目录
相关文章
|
13天前
|
缓存 Java Shell
[Git]入门及其常用命令
本文介绍了 Git 的基本概念和常用命令,包括配置、分支管理、日志查看、版本回退等。特别讲解了如何部分拉取代码、暂存代码、删除日志等特殊需求的操作。通过实例和图解,帮助读者更好地理解和使用 Git。文章强调了 Git 的细节和注意事项,适合初学者和有一定基础的开发者参考。
35 1
[Git]入门及其常用命令
|
1月前
|
开发工具 git
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
这篇文章是关于Git常用命令的总结,包括初始化配置、基本提交、分支操作、合并、压缩历史、推送和拉取远程仓库等操作的详细说明。
107 1
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
|
1月前
|
开发工具 git
git如何修改提交代码时的名字和邮箱?
git如何修改提交代码时的名字和邮箱?
55 4
|
1月前
|
Java Linux 开发工具
IDEA中git提交前如何关闭code analysis以及开启格式化代码
【10月更文挑战第12天】本文介绍了在 IntelliJ IDEA 中关闭代码分析和开启代码格式化的步骤。关闭代码分析可通过取消默认启用检查或针对特定规则进行调整实现,同时可通过设置 VCS 静默模式在提交时跳过检查。开启代码格式化则需在 `Settings` 中配置 `Code Style` 规则,并通过创建 Git 钩子实现提交前自动格式化。
193 3
|
17天前
|
开发工具 git 开发者
|
17天前
|
开发工具 git 开发者
提升Git效率:掌握这5个高级命令
【10月更文挑战第17天】
37 0
|
2月前
|
存储 Linux 开发工具
掌握 Git 命令:每个开发者的必备技能
无论团队项目还是个人开发,掌握 Git 命令都是必备技能。本文介绍 Git 的基本概念与命令,如初始化仓库 (`git init`)、添加文件 (`git add`)、提交更改 (`git commit`)、检出分支 (`git checkout`)、合并分支 (`git merge`) 等,还分享了高级技巧如查看差异 (`git diff`)、撤销提交 (`git revert`)、修复合并冲突 (`git mergetool`) 和使用别名简化命令 (`git config --global alias.ci commit`)。
|
1月前
|
Linux
linux/mac 下查看、修改文件权限的命令
这篇文章介绍了在Linux和Mac操作系统下如何查看和修改文件及文件夹的权限。
59 0
|
1月前
|
JavaScript 前端开发 开发工具
一身反骨的我,用--no-verify绕开了git代码提交限制!
【10月更文挑战第7天】一身反骨的我,用--no-verify绕开了git代码提交限制!
96 0
|
2月前
|
iOS开发 MacOS Windows
Mac air使用Boot Camp安装win10 ,拷贝 Windows 文件时出错
Mac air使用Boot Camp安装win10 ,拷贝 Windows 文件时出错