Git 清理无用Commit 和 Tags

之前使用Github仓库做图床,有一次想要clone下来做下备份,发现提交记录过多,太占用地方了.
就想着清理一下.

请谨慎对待每一次Commit!

Git清理全部Commit

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#切换分支
git checkout --orphan latest_branch

#添加所有文件
git add -A

#提交分支
git commit -m "提交说明"

#删除主分支
git branch -D master

#重名当前分支为master(主分支)
git branch -m master

#提交到远程仓库(强制覆盖)
git push -f origin master

Git删除指定文件及其历史记录

注意:文件路径千万不要以/开头!否则就不是相对路径了!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#删除指定文件及其历史记录
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch <你要删除的文件路径(相对于项目根目录)>' --prune-empty --tag-name-filter cat -- --all

#强制提交repo到远程仓库
git push origin master --force --all

#强制提交Tags到远程仓
git push origin master --force --tags

#回收空间
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now
Bash

删除无用的Tags

1
2
3
4
5
6
7

#本地
git tag | grep "<你要删除的tag包含的关键字>" |xargs git tag -d

#远程
git show-ref --tag | grep "<你要删除的tag包含的关键字>"| awk '{print $2}'|xargs git push origin --delete

其他

原文: https://www.idzd.top/archives/2562/
Git快速命令表

分享到