You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将C:\code下所有本地Git仓库迁移至另一台设备?

解决方案:批量清理Git仓库以简化迁移

针对你的场景,我们可以通过批量清理每个Git仓库的冗余数据、本地分支和未跟踪文件来大幅减少文件数量和体积,同时保留目录结构。以下是可直接运行的脚本和操作说明:

核心清理逻辑(单仓库)

每个Git仓库需要执行三类操作来瘦身:

  • 仅保留当前检出的本地分支,删除其余冗余分支
  • 清理Git数据库中的未引用对象,压缩存储体积
  • 删除工作区的未跟踪文件、临时产物和.gitignore忽略的文件

Windows PowerShell 批量脚本

将以下代码保存为Clean-GitRepos.ps1,放在C:\code目录下运行:

# 遍历C:\code下所有Git仓库的根目录(通过查找.git子目录定位)
Get-ChildItem -Path "C:\code" -Name ".git" -Recurse -Directory | ForEach-Object {
    $repoPath = $_.FullName | Split-Path -Parent
    Write-Host "=== 正在清理仓库: $repoPath ==="

    # 切换到当前仓库目录
    Set-Location -Path $repoPath

    # 1. 获取当前分支,仅保留该分支
    $currentBranch = git rev-parse --abbrev-ref HEAD
    Write-Host "当前保留分支: $currentBranch"

    # 删除所有非当前本地分支
    git branch | ForEach-Object {
        $branch = $_.Trim()
        if ($branch -ne $currentBranch -and $branch -notmatch "\*") {
            Write-Host "删除本地分支: $branch"
            git branch -D $branch
        }
    }

    # 2. 彻底清理Git数据库,移除所有未被引用的历史对象
    git gc --prune=all --aggressive

    # 3. 删除工作区未跟踪文件、目录及忽略的构建产物
    git clean -fdx

    Write-Host "=== 仓库 $repoPath 清理完成 ==="
    Write-Host ""
}

Write-Host "所有仓库清理完成!"

操作注意事项

  1. 前置确认:确保所有仓库的远程地址有效且可访问,清理后本地仅保留当前分支,其余分支需从远程拉取。
  2. 脚本权限:右键以管理员身份运行PowerShell,首次运行需执行Set-ExecutionPolicy RemoteSigned允许本地脚本执行。
  3. 效果预期:
    • 每个仓库的文件数量会大幅减少(移除临时文件、冗余分支的本地数据)
    • .git目录体积会被压缩,减少存储占用

迁移后恢复操作

将清理后的C:\code复制到新电脑后,进入每个仓库目录执行以下命令同步远程最新内容:

git pull

若需要其他分支,直接从远程拉取即可:

git checkout -b 目标分支名 origin/目标分支名

内容的提问来源于stack exchange,提问作者Matt Frear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 21:48:20