批量替换和修改Git远端地址

在git bash中执行

1
find . -name ".git" -type d -exec sed -i 's#旧地址#新地址#g' {}/config \;

将替换所有子目录的git远端地址。

说明:

  • -type d 只匹配目录。子模块(submodule)或工作树(worktree)里的 .git 是文件而不是目录,加该过滤可以避免误处理。
  • sed 的分隔符用 # 而不是默认的 /,因为 Git 远端地址里通常含有 /(如 https://...git@.../...),用默认分隔符会冲突。
  • 上面是 Linux / Git Bash 的写法。macOS 自带的是 BSD sed,-i 必须接一个备份后缀(空串表示不备份),否则会报错。macOS 写法:
1
find . -name ".git" -type d -exec sed -i '' 's#旧地址#新地址#g' {}/config \;