如何创建一个只包含一个文件的完整历史的git分支

pxiryf3j  于 2023-03-28  发布在  Git
关注(0)|答案(1)|浏览(118)

我一直在这里:

并尝试在chatGPT中提出一些问题。
这些解决方案展示了如何获取一个新的分支,其中包含存储在文件夹中的文件的历史记录。它们使用git filter-branchgit subtree命令。
但是,我没有得到如何创建一个新的git分支的解决方案,该分支包含只有一个文件的完整历史。
示例:假设我的项目中有一个子文件夹:./src/js/mains/包含许多文件,其中一个名为test.js
git命令是什么来获取一个只包含一个文件完整历史的分支?
这可能吗?
我使用git for windows:git version 2.39.2.windows.1

xdnvmnnf

xdnvmnnf1#

使用单个文件(或多个文件)的历史重写整个repo的最简单方法可能是使用git-filter-repo。一旦您安装了它,步骤很简单:
1.创建一个新的存储库克隆。

  1. git filter-repo --path src/js/mains/test.js
    git-filter-repo的一个惊人之处在于,与旧版git-filter-branch相比,它的速度有多快。
    请注意,即使git-filter-repo实际上不是Git的一部分,必须单独安装,即使official Git docs也建议使用它而不是git-filter-branch
    git filter-branch有太多的缺陷,可能会导致预期的历史重写的不明显的损坏(并且由于它的性能非常糟糕,因此您几乎没有时间调查此类问题)。这些安全和性能问题无法向后兼容修复,因此不建议使用它。请使用替代的历史过滤工具,如git filter-repo

相关问题