如何在两台Mac设备之间同步Git remote配置
Git本地仓库remote配置跨Mac迁移方案
Git的所有remote配置本质上都存在每个仓库根目录.git隐藏文件夹下的config文件中,完全不需要逐个仓库手动配置,根据你的实际场景选下面的方法即可,30个仓库的迁移全程不会超过10分钟。
方案1:全量拷贝仓库目录(零额外配置,优先选)
如果你还没把旧Mac上的代码传到新设备,直接把存放所有Git仓库的根目录完整拷贝过去就行:
- 用Time Machine直接恢复用户目录的话,所有Git配置(包括remote、分支跟踪关系、本地stash、提交记录等)会原封不动保留,开机就能用
- 用外置硬盘、隔空投送或者局域网共享拷贝的话,记得不要过滤隐藏文件:在访达中按
Command+Shift+.就能显示以.开头的隐藏文件,确保每个仓库下的.git文件夹一起被拷贝,复制完成后打开仓库就能直接执行pull/push操作,不需要重新配置remote。
方案2:已拷贝代码文件、仅缺失Git配置的批量恢复
如果你已经把代码文件拷到新Mac,但漏了.git目录或者已经在新设备上重新初始化了仓库,直接用脚本批量导出导入配置即可:
- 在旧Mac上打开终端,进入存放所有本地Git仓库的根目录,比如所有代码都存在
~/workspace/code路径下,就执行命令进入对应目录:
cd ~/workspace/code
- 执行下面的命令,自动扫描所有子目录中的Git仓库,把所有remote配置导出到迁移文件:
find . -type d -name ".git" | while read git_path; do repo_dir=$(dirname "$git_path") echo "===REPO_PATH:$repo_dir===" >> git_remote_backup.txt git -C "$repo_dir" remote -v >> git_remote_backup.txt done
执行完成后,当前目录会生成一个git_remote_backup.txt文件,里面记录了每个仓库的相对路径和对应的所有remote地址。
3. 把这个备份文件传到新Mac,放在和旧设备一致的代码根目录下(比如旧设备代码在~/workspace/code,新设备也把代码放在同一路径,把备份文件放到这个目录下),在新Mac的终端进入该目录,执行批量恢复脚本:
target_repo="" while IFS= read -r line; do if [[ $line == "===REPO_PATH:"* ]]; then target_repo=${line#===REPO_PATH:} target_repo=${target_repo%===} # 若仓库未初始化则自动初始化 git -C "$target_repo" init >/dev/null 2>&1 else if [ -n "$target_repo" ] && [ -n "$line" ]; then remote_name=$(echo "$line" | awk '{print $1}') remote_url=$(echo "$line" | awk '{print $2}') # 覆盖已存在的同名remote,避免重复添加报错 git -C "$target_repo" remote remove "$remote_name" >/dev/null 2>&1 git -C "$target_repo" remote add "$remote_name" "$remote_url" fi fi done < git_remote_backup.txt
- 脚本执行完成后,随机选2-3个仓库进入目录执行
git remote -v校验,确认remote地址和旧设备一致即可。
补充说明
- 如果你的远程仓库用SSH协议关联,只要提前把新Mac的SSH公钥添加到对应的代码托管平台,迁移完成后直接就能正常推送拉取代码,不需要额外调整
- 脚本会自动识别同一个仓库下配置的多个remote(比如同时配置了origin、upstream),不会遗漏
- 不建议手动逐个修改
.git/config文件,容易写错格式导致Git配置异常,脚本处理的稳定性更高
内容的提问来源于stack exchange,提问作者xploreraj
相关产品推荐
相关产品推荐

