删除文件需要注意一点,就是你当前的项目,没有任何文件在待提交上,或者暂存区,有的话如果不重要你可以取消掉,或者先提交一次。让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.txtpackage.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
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。