场景
gitlab中提交了一些大文件或是文件夹。或者是提交了无关的文件、文件夹。例如:提交了target目录、object目录等。
虽然能通过删除文件后,使用git commit、git push来达到目的。但是在.git目录中是存在其历史记录的。怎样可能将其历史记录也删除呢?
操作
$ git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch 这里是要删除的目录或文件名(相对路径)' --prune-empty --tag-name-filter cat -- --all
例如:$ git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch ./项目管理PMP/' --prune-empty --tag-name-filter cat -- --all
$ git commit -m 'delete pmp'
$ git push origin master --force
如果push时提示保护分支不可写,则在gitlab页面去掉master为保护分支即可。
参考
http://www.hollischuang.com/archives/1708
向原作者致敬!
自己备忘哈,以后直接复制粘贴使用。