批量替换指定目录下所有 Git 仓库的远程地址(remote URL)。 当用户需要将 Git 仓库从一个服务器迁移到另一个服务器时使用。 触发词:git remote 替换、git url 批量修改、git 仓库迁移、更换 git 地址、批量修改 remote url。
批量替换 Git 远程地址是一项面向实际任务的技能,主要用于执行前必须从用户处获取以下参数:;scanDir :扫描目录路径(如 D: 或 /home/user/projects);
使用 PowerShell 执行以下命令(将参数替换为用户提供的实际值):;Linux 系统;使用 Bash 执行以下命令:。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
执行前必须从用户处获取以下参数:
scanDir:扫描目录路径(如 D: 或 /home/user/projects)oldUrl:旧 Git 服务器地址newUrl:新 Git 服务器地址使用 PowerShell 执行以下命令(将参数替换为用户提供的实际值):
$scanDir = "" $oldUrl = " " $newUrl = " " Write-Host "开始扫描 $scanDir 下的所有 .git/config 文件..." -ForegroundColor Cyan Write-Host "目标:将 $oldUrl 替换为 $newUrl" -ForegroundColor Cyan Write-Host "----------------------------------------" $gitDirs = Get-ChildItem -Path $scanDir -Recurse -Directory -Filter ".git" -Force -ErrorAction SilentlyContinue $countSuccess = 0 $countSkip = 0 foreach ($gitDir in $gitDirs) { $configPath = Join-Path $gitDir.FullName "config" if (Test-Path $configPath) { try { $content = Get-Content -Path $configPath -Raw -Encoding UTF8 if ($content -like "*$oldUrl*") { $newContent = $content -replace [regex]::Escape($oldUrl), $newUrl Set-Content -Path $configPath -Value $newContent -Encoding UTF8 -NoNewline Write-Host "[已修改] $configPath" -ForegroundColor Green $countSuccess++ } else { $countSkip++ } } catch { Write-Host "[错误] 无法处理 $configPath : $_" -ForegroundColor Red } } } Write-Host "----------------------------------------" Write-Host "处理完成!成功: $countSuccess, 跳过: $countSkip" -ForegroundColor Yellow
使用 Bash 执行以下命令:
SCAN_DIR="" OLD_URL=" " NEW_URL=" " echo "开始扫描 $SCAN_DIR 下的所有 .git/config 文件..." echo "目标:将 $OLD_URL 替换为 $NEW_URL" echo "----------------------------------------" count_success=0 count_skip=0 while IFS= read -r gitdir; do config="$gitdir/config" if [ -f "$config" ] && grep -q "$OLD_URL" "$config" 2>/dev/null; then sed -i "s|${OLD_URL}|${NEW_URL}|g" "$config" echo "[已修改] $config" ((count_success++)) else ((count_skip++)) fi done < <(find "$SCAN_DIR" -name ".git" -type d 2>/dev/null) echo "----------------------------------------" echo "处理完成!成功: $count_success, 跳过: $count_skip"
建议用户进入某个项目目录运行 git remote -v 验证是否生效。