git永久删除文件或文件夹并删除历史记录同步到远程仓库
删除文件需要注意一点,就是你当前的项目,没有任何文件在待提交上,或者暂存区,有的话如果不重要你可以取消掉,或者先提交一次。让git这两个区域空下来。
如果没有清空使用删除,会提示如下代码:
Cannot rewrite branches: You have unstaged changes.
永久删除文件
清空暂存和提交区,然后输入以下命令:
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch password.txt' --prune-empty --tag-name-filter cat -- --all
password.txt
这个就是你要删除的文件名。
这个也是有路径的,默认就是项目的根目录(相对于git仓库的跟目录),所以这里的password.txt
和package.json
这些文件是同级的,如果你要删除更下层的,比如src下的password.text
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch src/password.txt' --prune-empty --tag-name-filter cat -- --all
注意路径不能以/
开头,否则文件或文件夹会被认为是从 git 的安装目录开始。
删除文件夹
在 git rm --cached
命令后面添加 -r 命令,表示递归的删除(子)文件夹和文件夹下的文件,类似于 rm -rf
命令。
git filter-branch --force --index-filter 'git rm --cached -r --ignore-unmatch src' --prune-empty --tag-name-filter cat -- --all
同步远程仓库
git push --all --force
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据