我有一个git分支,我需要克服所有的痕迹.我想我需要类似的东西
git filter-branch --index-filter 'git -D' --tag-name-filter cat -- --all
或者可能
git filter-branch --index-filter 'git rm --cached *' --tag-name-filter cat --
然后我会
git push -f origin :
我不愿意在不知道他们会做什么或他们是否会工作的情况下尝试这些.
假设你想要核武器evilbranch
.
您说您要删除所有分支的历史记录.这在技术上包括初始提交,这可能是您想要的更多提交.首先,确定您认为哪个提交是该分支的第一次提交.让我们说吧666bad
.现在我们需要找到它的所有引用.跑
git branch -a --contains 666bad git tag --contains 666bad
现在全部删除它们.你可以使用git命令,也可以直接进入.git/refs
.
在每台可能包含该文件的计算机上执行此操作.
确保你没有分离头.
现在我们可以杀死所有提交,因此所有代码都不再可引用(来自这个 gitHub链接):
git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin git reflog expire --expire=now --all git gc --prune=now
同样,这应该在每台计算机上完成.
最后,在每台计算机上使用它.
注意:666bad
是从它来自哪里分割后 evilbranch
的第一次提交,即仅第一次提交evilbranch
.