Git 清理无用Commit 和 Tags

warning: 这篇文章距离上次修改已过1460天,其中的内容可能已经有所变动。

因为自己手残导致Git库内添加一些奇怪的东西,还很占地方,于是就有了这篇文章。

Error:请谨慎对待每一次Commit

Git清理全部Commit

缺点就是你提交记录和文件历史全没了,但是简单高效粗暴~

#切换分支
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删除指定文件及其历史记录

Error:注意:文件路径千万不要以/开头!否则就不是相对路径了!
上条警告是来自于被舍友rm -rf /*的某人的悲鸣~
#删除指定文件及其历史记录
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

删除无用的Tags

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

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

添加新评论