繁体   English   中英

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

[英]How to remove Git history of anything but current files

如何删除任何分支上的任何内容的完整历史记录,但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?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM