Git 操作笔记
【第1期】云代码仓库更换服务商,本地如何批量更新对应项目的git地址
背景:公司原先的云代码仓库过期,要更换另外的服务商(从腾讯到阿里云)。因此本地已经拉取的项目也需要同步更新对应的git地址,不然代码提交不上(原地址已被锁定,无法提交)
解决方案
通过脚本检测本地代码项目的.git目录,批量更新对应的git前缀地址。
tip 这里可以直接更换前缀的前提是,云代码仓库迁移时,保留原先的代码仓库的相对路径,比如原先是 tengxuncode.com/xxxx/xxx/de... ---> 迁移后应该是 aliyuncode.com/xxxx/xxx/de... ,这里的 /xxxx/xxx/demo-proj.git是不变的,保持相对路径不变,替换起来逻辑会比较简单,不然就得做额外的处理了
接下来就是执行脚本了
tip 注意 下面的旧、新地址前缀替换成你们自己实际的地址
bash
#!/bin/bash
# 1) # 设置旧、新地址前缀
export GIT_OLD="https://tengxuncode.com"
export GIT_NEW="https://aliyuncode.com"
# 2) 递归处理所有仓库
find . -type d -name '.git' | while read -r git_dir; do
project_dir=$(dirname "$git_dir")
cd "$project_dir" || continue
old_url=$(git remote get-url origin 2>/dev/null || git remote -v | awk '/origin/ {print $2}' | head -n1)
[ -z "$old_url" ] && continue
# 3) 兼容旧版 Bash 的替换
new_url=$(printf '%s\n' "$old_url" | sed "s|$GIT_OLD|$GIT_NEW|")
# 4) 如果确实变了才更新
if [ "$old_url" != "$new_url" ]; then
git remote set-url origin "$new_url"
echo "✅ 已更新:$project_dir -> $new_url"
fi
cd - >/dev/null
done
使用方法
- 把上述脚本保存为
migrate-git.sh
,或直接复制到终端。 - 在「包含所有仓库的最顶层目录」里执行:
bash
bash migrate-git.sh
实际效果演示(涉及实际项目,作马赛克处理)

