gpt4 book ai didi

git - 如何删除除当前文件之外的任何内容的 Git 历史记录

转载 作者:太空狗 更新时间:2023-10-29 14:19:53 24 4
gpt4 key购买 nike

除了当前存在于 HEAD(我的主分支)上的文件之外,如何删除任何分支上的任何内容的完整历史记录?

我一直在做类似的事情

 git filter-branch -f --prune-empty --index-filter \
"git rm -rf --cached --ignore-unmatch '*.js' '*.html' '*.css'" \
HEAD

但这变得很乏味,因为我必须明确说明要删除什么,而不是保留什么。

Git 原则上应该能够确定当前文件的所有祖先,回溯历史,并删除所有不在祖先中的东西。怎么办?

我放弃了:整个历史重写似乎非常脆弱,而且把事情搞砸了。这很糟糕。我只是复制文件并硬着头皮失去历史。

最佳答案

为什么不先删除所有文件,然后添加您想要的文件呢?沿着这些线的东西:

git ls-files HEAD > /tmp/files
git filter-branch ... --index-filter \
"git rm *; xargs -a /tmp/files git add" --all

此外,如果要过滤所有分支 (--all),为什么要在 filter-branch 命令中使用 HEAD?

关于git - 如何删除除当前文件之外的任何内容的 Git 历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19376694/

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