Git:使用历史记录将文件从一个仓库移动到另一个仓库 | Vivek Dhami

主要观点:开发者和代码维护者常需在代码仓库间移动文件/文件夹,过去常用 git filter-branch但因其历史重写问题不再是首选,现在可使用 git 命令行和 filter-repo命令轻松导出带历史的文件,且其需单独安装。
关键信息

  • 背景:过去常用 filter-branch但有问题,patching 也非完美选择,现在推荐使用 filter-repo
  • 安装:不是 git cli 的一部分,需单独安装,不同系统安装方式不同,项目 github repo 有安装说明,安装后可作为 git cli 的子命令使用。
  • 操作流程

    • 清理源仓库,可通过 git filter-repo --path <include-folder> --path <include-file> 包含文件/文件夹及其历史,或通过 git filter-repo --path <folder> --path <file> --invert-paths 排除。
    • 将源仓库添加为目标仓库的远程源,如 git remote add <origin-name> <source-repo-folder-path>
    • 从源仓库获取并合并更改和历史,如 git fetch <origin-name> 等。
    • 清理,如 git remote rm <origin-name>git branch -d <branch-name>

    重要细节:在源仓库进行清理操作时,最好在本地分支进行以免影响原仓库;安装说明可在项目 github repo 的 INSTALL.md 查看。

阅读 10
0 条评论