删除已提交的commit

1
2
3
4
git reset --hard <commit_id>   
#回滚到指定commit
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重命名方式

阅读全文 »

西江月・证明

即得易见平凡,仿照上例显然。留作习题答案略,读者自证不难。
反之亦然同理,推论自然成立。略去过程Q.E.D.,由上可知证毕。

阅读全文 »
0%