我需要从提交历史记录中删除文件。我按照Github的指示删除敏感数据:
$ git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch <myfile>' \
--prune-empty --tag-name-filter cat -- --all
...但是我一定做错了,因为现在我有一堆重复的提交。一组提交仍然有我的文件;另一个没有。除此之外,它们是相同的。如何删除仍包含文件的所有提交?
根据问题的信息,现有的答案和他们的评论,看来原始的发帖人在做完以后会犯一些错误git filter-branch
,并且没有对仓库进行备份。
因此,如果原始发布者想要执行此操作,则此处提供了有关将回购操作返回到过滤器分支之前的先前状态的说明。
git filter-branch
如果您出于任何原因需要恢复它们,它将自动保存对旧提交的引用。您将在回购.git/refs/original/refs/
目录下找到它们:
ls -l .git/refs/original/refs/heads/
total 1
-rw-r--r-- 1 Keoki Administ 41 May 23 01:13 master
ls -l .git/refs/original/refs/tags/
total 1
-rw-r--r-- 1 Keoki Administ 41 May 23 01:13 v1.0
以上每个参考都包含旧提交的提交sha ID:
cat .git/refs/original/refs/heads/master
276fc24dc4b12edf75aea40f4fd50e25a5840005
cat .git/refs/original/refs/tags/v1.0
475593a612141506f59a141e38b8c6a3a2917f85
要恢复原始master
分支(从进行过滤分支之前开始),只需使用上面的引用进行硬重置,或使用其中包含的提交sha ID:
git checkout master
# Use reference
git reset --hard refs/original/refs/heads/master
# Or use sha ID
git reset --hard 276fc24dc4b12edf75aea40f4fd50e25a5840005
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句