gpt4 book ai didi

git - 如何使用 git filter-branch 通过 blob SHA1 删除文件?

转载 作者:行者123 更新时间:2023-12-03 23:38:12 24 4
gpt4 key购买 nike

我见过的大多数删除文件的 git filter-branch 示例都是根据文件名删除文件。我不一定要那样做。相反,我已经确定了我想要删除的文件的许多 blob(未提交)SHA1,无论它们在存储库中的哪个位置。 (由于我们的 repo 历史,文件往往会在一堆不改变的情况下移动。)

告诉 git filter-branch 基于其 blob SHA1 删除文件的最佳方法是什么?

最佳答案

您的任务是通过哈希标识符从 Git 历史记录中删除 blob。您可能会发现使用 BFG 比 git-filter-branch 更快、更容易,特别是使用 --strip-blobs-with-ids旗帜:

-bi, --strip-blobs-with-ids <blob-ids-file> ...strip blobs with the specified Git object ids



仔细关注 usage instructions ,核心部分就是这样:
$ java -jar bfg.jar  --strip-blobs-with-ids <blob-ids-file>  my-repo.git

请注意 <blob-ids-file>文件应该包含 Git 对象 ID,而不是 blob 内容的普通 SHA-1 哈希值。

对于给定的文件,您可以使用 git hash-object 计算 Git 对象 ID :
$ git hash-object README.md
a63b49c2e93788cd71c81015818307c7b70963bf

您可以看到此值与简单的 SHA-1 哈希不同:
$ sha1sum README.md
7b833f7b37550e2df719b57e8c4994c93a865aa9 README.md

...这是因为 Git 对象 id 散列了一个 Git header 以及文件的内容,即使它确实使用了相同的 SHA-1 算法。

BFG 通常比运行速度至少快 10-50 倍 git-filter-branch ,并且通常更易于使用。

完全披露:我是 BFG Repo-Cleaner 的作者。

关于git - 如何使用 git filter-branch 通过 blob SHA1 删除文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42254741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com