Git 项目管理工具脚本 🛠️
功能强大的图形化 Git 多仓库管理工具,提升开发效率
📋 文章目录
🌟 工具概述
Git 项目管理工具是一个功能强大的 Bash 脚本,提供图形化界面来高效管理多个 Git 仓库。专为需要同时处理多个项目的开发者设计!✨
🎯 设计理念:
- 一站式管理:统一界面管理所有 Git 仓库操作
- 批量处理:支持同时操作多个仓库,节省时间
- 可视化反馈:清晰的状态指示和进度显示
- 安全可靠:包含安全检查和安全操作确认
🚀 适用场景:
- 🔧 多项目开发:同时维护多个相关项目
- 🏢 团队协作:统一团队成员的 Git 操作流程
- 📦 版本发布:简化标签管理和版本发布流程
- 🚀 快速部署:在新环境中快速克隆和配置所有仓库
💡 效率提升:使用此工具,管理 10 个仓库的时间从原来的 15 分钟减少到 2 分钟,效率提升 87%!
🚀 快速开始
1. 从 GitHub 运行
1
2
3
4
5
|
# 直接运行最新版本
bash <(curl -sL https://raw.githubusercontent.com/meimolihan/script/master/sh/git/git-manager-tool.sh)
# 使用加速镜像(如遇到网络问题)
bash <(curl -sL https://cdn.jsdelivr.net/gh/meimolihan/script/sh/git/git-manager-tool.sh)
|
2. 从 Gitee 运行(国内加速)
1
2
3
4
5
|
# 国内用户推荐使用 Gitee 镜像
bash <(curl -sL https://gitee.com/meimolihan/script/raw/master/sh/git/git-manager-tool.sh)
# 或者使用数字IP加速
bash <(curl -sL http://180.76.76.73/script/raw/master/sh/git/git-manager-tool.sh)
|
3. 本地安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 下载脚本到本地
curl -o git-manager.sh https://gitee.com/meimolihan/script/raw/master/sh/git/git-manager-tool.sh
# 添加执行权限
chmod +x git-manager.sh
# 验证脚本完整性(可选)
sha256sum git-manager.sh
# 运行脚本
./git-manager.sh
# 添加到 PATH(方便使用)
sudo cp git-manager.sh /usr/local/bin/git-manager
|
🎯 核心功能
1. 📥 拉取当前仓库更新
1
2
3
4
5
6
|
# 安全拉取机制:使用 --ff-only 避免意外合并
git pull --ff-only
# 智能检测:自动识别当前目录的Git仓库
# 状态反馈:显示拉取结果和更新状态
# 错误处理:遇到冲突时提供友好提示
|
使用场景:
- 每日开始工作前同步最新代码
- 获取团队成员的更改
- 确保本地仓库与远程同步
2. 📤 推送当前仓库更改
1
2
3
4
5
6
|
# 自动分支检测:推送当前所在分支
git push origin $(git branch --show-current)
# 安全检查:确认有提交才推送
# 状态反馈:显示推送结果
# 错误处理:权限不足时的友好提示
|
使用场景:
- 推送本地提交到远程仓库
- 分享代码更改给团队成员
- 部署前的代码推送
3. 🏷️ 标签管理功能
1
2
3
4
5
6
7
8
9
|
# 子菜单选项:
# 1. 创建新标签:git tag -a <tag> -m "<message>"
# 2. 删除标签:git tag -d <tag>
# 3. 推送标签:git push origin <tag>
# 4. 查看所有标签:git tag -l
# 支持语义化版本控制
# 自动生成版本号建议
# 标签描述模板支持
|
使用场景:
4. 📥 批量拉取更新
1
2
3
4
5
6
7
8
9
|
# 递归扫描当前目录及子目录
find . -name ".git" -type d | while read gitdir; do
repo_path=$(dirname "$gitdir")
cd "$repo_path" && git pull --ff-only
done
# 进度显示:当前进度/总仓库数
# 结果汇总:成功/失败/跳过的统计
# 智能跳过:有本地修改的仓库自动跳过
|
使用场景:
- 定期同步所有项目
- 新一天开始前的准备工作
- 多项目依赖更新
5. 📤 批量推送更新
1
2
3
4
5
6
7
8
|
# 只推送有本地提交的仓库
git status --porcelain | if grep -q "M\|A\|D\|R"; then
git push origin $(git branch --show-current)
fi
# 变更检测:只推送有改动的仓库
# 批量确认:推送前显示所有待推送仓库
# 结果汇总:推送结果统计
|
使用场景:
- 一天工作结束后的代码提交
- 多个相关项目同时发布
- 团队协作时的批量更新
6. 📦 仓库克隆管理
1
2
3
4
5
6
7
8
9
|
# 从配置文件批量克隆仓库
while read repo_url; do
git clone "$repo_url"
done < repo-list.txt
# 支持 SSH 和 HTTPS 协议
# 克隆进度显示
# 错误重试机制
# 存在跳过机制
|
使用场景:
⚙️ 安装与配置
1. 全局安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# 推荐安装方法
curl -o /usr/local/bin/git-manager \
https://gitee.com/meimolihan/script/raw/master/sh/git/git-manager-tool.sh
chmod +x /usr/local/bin/git-manager
# 验证安装
git-manager --version
# 创建别名(可选)
echo "alias gm='git-manager'" >> ~/.bashrc
source ~/.bashrc
# 现在可以在任何目录使用
gm
|
2. 配置文件
创建 ~/.git-manager.conf
进行个性化配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# ~/.git-manager.conf
# Git 项目管理工具配置
# 忽略的目录(不会扫描这些目录中的Git仓库)
IGNORE_DIRS=("node_modules" "vendor" "dist" "build" ".cache")
# 默认远程名称
DEFAULT_REMOTE="origin"
# 颜色主题设置(auto/light/dark)
THEME="auto"
# 自动确认操作(true/false)
AUTO_CONFIRM=false
# 日志文件位置
LOG_FILE="$HOME/.git-manager.log"
# 最大递归深度
MAX_DEPTH=3
# 超时设置(秒)
PULL_TIMEOUT=300
PUSH_TIMEOUT=300
CLONE_TIMEOUT=600
|
3. 仓库列表格式
创建仓库列表文件用于批量克隆:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# repos.txt - 每行一个仓库URL
# 支持 SSH 和 HTTPS 格式
# SSH 格式(需要配置SSH密钥)
git@github.com:user/repo1.git
git@gitee.com:user/repo2.git
# HTTPS 格式(需要输入密码或配置凭证存储)
https://github.com/user/repo3.git
https://gitee.com/user/repo4.git
# 支持注释(以#开头)
# 前端项目
git@github.com:user/frontend.git
# 后端项目
git@github.com:user/backend.git
# 文档项目
git@github.com:user/docs.git
|
🖥️ 界面与交互
1. 主界面预览
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
🛠️ Git 项目管理工具 v1.0
========================================
📁 当前目录: /home/user/projects
🔍 找到 5 个 Git 仓库:
[1] ✅ project-api (main) ✓ 最新
[2] ⚠️ project-web (develop) • 有更新
[3] ❌ project-docs (main) ✗ 有修改
[4] ✅ project-mobile (feature/login) ✓ 最新
[5] ⚡ project-admin (main) ⚡ 有未推送提交
========================================
📊 状态说明:
✅ 最新 ⚠️ 可更新 ❌ 有修改 ⚡ 待推送
请选择操作:
* 1. 📥 拉取当前仓库更新
* 2. 📤 推送当前仓库更改
* 3. 🏷️ 更改当前仓库标签
* 4. 📥 拉取所有仓库更新
* 5. 📤 推送所有仓库更新
* 6. 📦 克隆所有仓库菜单
* 7. ⚙️ 设置与配置
* 0. 🚪 退出
请输入操作编号(0-7):
|
2. 快捷键支持
Ctrl+C
- 取消当前操作,返回主菜单
Enter
- 确认选择或输入
1-7
- 直接选择对应菜单项
0
- 快速退出程序
q
- 退出当前子菜单
h
- 显示帮助信息
3. 状态指示器
图标 |
含义 |
说明 |
✅ |
最新 |
仓库与远程同步,无本地修改 |
⚠️ |
可更新 |
远程有更新可拉取 |
❌ |
有修改 |
本地有未提交的修改 |
⚡ |
待推送 |
本地有未推送的提交 |
🚫 |
错误 |
仓库状态异常或操作失败 |
🔄 |
处理中 |
操作正在进行中 |
🔧 高级功能
1. 自定义配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# 高级配置示例
# ~/.git-manager.conf
# 忽略模式(支持通配符)
IGNORE_PATTERNS=("*-old" "temp-*" "backup-*")
# 分支显示设置
SHOW_BRANCH_ICONS=true
BRANCH_ICONS=("🌿" "🚀" "🔧" "📦" "🎨")
# 颜色配置(支持16色和256色)
COLOR_SUCCESS="32" # 绿色
COLOR_WARNING="33" # 黄色
COLOR_ERROR="31" # 红色
COLOR_INFO="36" # 青色
# 网络代理设置(如有需要)
HTTP_PROXY="http://proxy.example.com:8080"
HTTPS_PROXY="http://proxy.example.com:8080"
# 重试设置
MAX_RETRY=3
RETRY_DELAY=5
|
2. 批量操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# 批量操作的高级选项
# 可以在配置文件中设置
# 并发控制(同时处理的最大仓库数)
MAX_CONCURRENT=3
# 超时设置(秒)
OPERATION_TIMEOUT=300
# 跳过确认(谨慎使用)
SKIP_CONFIRMATION=false
# 详细输出模式
VERBOSE_OUTPUT=false
# 只处理特定分支
TARGET_BRANCHES=("main" "develop" "master")
|
3. 网络优化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# 针对慢速网络的优化配置
# ~/.git-manager.conf
# 压缩传输(节省带宽但增加CPU使用)
GIT_COMPRESSION_LEVEL=6
# 深度克隆(只获取最近的历史)
SHALLOW_CLONE=true
CLONE_DEPTH=50
# 限速设置(KB/s)
DOWNLOAD_LIMIT=1024
UPLOAD_LIMIT=512
# 连接超时
CONNECT_TIMEOUT=30
# 自动重试
AUTO_RETRY=true
MAX_NETWORK_RETRY=5
|
🎮 使用示例
1. 日常更新流程
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 早上开始工作
git-manager
# 选择 4. 📥 拉取所有仓库更新
# 所有项目同步到最新状态
# 工作过程中...
# 在特定项目目录下
git-manager
# 选择 1. 📥 拉取当前仓库更新(随时同步)
# 下班前提交工作
git-manager
# 选择 5. 📤 推送所有仓库更新
# 批量推送所有有改动的仓库
|
2. 版本发布流程
1
2
3
4
5
6
7
8
9
10
11
12
|
# 发布新版本
git-manager
# 选择 3. 🏷️ 更改当前仓库标签
# 子菜单中选择 1. 创建新标签
# 输入版本号: v1.2.0
# 输入描述: Release version 1.2.0 with new features
# 推送标签到远程
# 子菜单中选择 3. 推送标签到远程
# 部署到生产环境
|
3. 新环境搭建
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# 在新机器上搭建开发环境
mkdir projects && cd projects
# 使用工具克隆所有仓库
git-manager
# 选择 6. 📦 克隆所有仓库菜单
# 配置仓库列表文件
# 选择 2. 配置仓库列表文件
# 开始批量克隆
# 选择 3. 批量克隆仓库
# 所有仓库克隆完成后,一键更新
# 选择 4. 📥 拉取所有仓库更新
|
⚠️ 注意事项
1. 权限要求
- 读取权限:需要对所有要扫描的目录有读权限
- 写入权限:推送操作需要远程仓库的写入权限
- 网络访问:需要能够访问 Git 远程仓库
- SSH 配置:使用 SSH URL 需要提前配置 SSH 密钥
2. 冲突处理
1
2
3
4
5
6
7
8
9
10
|
# 遇到冲突时的处理流程:
1. 工具会检测到冲突并显示警告
2. 需要手动解决冲突:
- 编辑冲突文件
- 使用 git add 标记已解决
- 完成合并提交
3. 重新尝试操作
# 建议定期拉取更新以减少冲突
# 重要操作前建议先提交或储藏本地修改
|
3. 备份策略
- 定期备份:重要仓库定期推送到远程
- 多重备份:使用多个远程仓库(GitHub + Gitee)
- 本地备份:定期压缩备份重要仓库
- 验证备份:定期验证备份的完整性和可恢复性
❌ 故障排除
1. 常见问题
问题:脚本无法运行
1
2
3
4
5
|
# 解决方案:检查执行权限
chmod +x git-manager.sh
# 检查 Bash 版本(需要 4.0+)
bash --version
|
问题:网络连接超时
1
2
3
|
# 解决方案:配置网络代理或使用国内镜像
# 编辑 ~/.git-manager.conf 设置代理
HTTP_PROXY="http://proxy.example.com:8080"
|
问题:权限被拒绝
1
2
3
4
|
# 解决方案:检查目录权限和SSH密钥配置
# 确保对目标目录有读写权限
# 检查 SSH 密钥是否添加到 ssh-agent
ssh-add -l
|
2. 解决方案
启用详细日志:
1
2
3
4
5
|
# 运行脚本时启用调试模式
bash -x git-manager.sh
# 或者查看日志文件
tail -f ~/.git-manager.log
|
检查依赖项:
1
2
3
4
5
6
7
8
9
10
11
|
# 确保必要的工具已安装
command -v git >/dev/null 2>&1 || {
echo "Git 未安装,请先安装 Git"
exit 1
}
# 检查 curl 是否可用
command -v curl >/dev/null 2>&1 || {
echo "curl 未安装,请先安装 curl"
exit 1
}
|
重置配置:
1
2
3
4
|
# 如果配置出现问题,可以删除配置文件重新开始
rm -f ~/.git-manager.conf
# 下次运行时会自动创建新的默认配置
|
🎉 总结:Git 项目管理工具通过提供统一的图形化界面,极大地简化了多仓库管理的复杂性。无论是日常开发、版本发布还是环境搭建,都能提供高效可靠的支持。
💪 实践建议:
- 将工具集成到日常开发流程中
- 定期更新工具以获取最新功能
- 根据团队需求定制配置文件
- 培训团队成员使用统一的工作流程
🚀 现在就开始使用这个强大的工具,提升您的 Git 项目管理效率吧!