Git 项目管理工具脚本 🛠️

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 项目管理工具通过提供统一的图形化界面,极大地简化了多仓库管理的复杂性。无论是日常开发、版本发布还是环境搭建,都能提供高效可靠的支持。

💪 实践建议

  1. 将工具集成到日常开发流程中
  2. 定期更新工具以获取最新功能
  3. 根据团队需求定制配置文件
  4. 培训团队成员使用统一的工作流程

🚀 现在就开始使用这个强大的工具,提升您的 Git 项目管理效率吧!