删除已提交的commit
1 2 3 4
| git reset --hard <commit_id>
git push origin HEAD --force
|
删除标签
1 2 3 4
| git tag -d <tag>;
git push origin :<tag>
|
永久删除已提交的文件与提交记录
1 2 3 4 5 6 7 8 9 10 11
| git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -3
git rev-list --objects --all | grep <hash>
git filter-branch --force --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch <file or folder name>' --tag-name-filter cat -- --all
git push --force --all
|
说明
filter-branch
让git重写每一个分支
--force
遇到冲突也让git强制执行
--index-filter
重写时执行命令
--prune-empty
忽略空commit。
--tag-name-filter
tag重命名方式