【Git】如何在已经提交内容中删除某个目录或文件
有的时候,会出现git错误添加了某个目录或者某个文件,现在需要将这个文件从git中删除。
可以使用如下命令执行。其中-r
代表递归删除文件,--cached
代表只从git的索引中删除文件,而不会在磁盘上删除文件。
1 | git rm -r --cached path/to/directory |
调用这个命令后,目标目录和文件就不再被git追踪。如果你不想让这个文件再次被错误的包含,请将文件或者路径写入.gitignore
中,并git add .gitignore
使修改生效。
我一般容易出现这个问题的是错误的添加了.vscode
和cmake build的路径,需要将其删除。
注意,修改后想提交到远端可能需要使用-f
强制提交,请在提交之前确认您的操作无误!最好是先备份一下原有文件的git仓库。
另外,如果一个仓库被强制提交了,正好覆盖了另外一个本地仓库中已有的commit,此时应该将这个仓库回滚到该强制提交commit之前的某一个commit,再执行git pull
,这样可以避免出现merge操作。
这样说的可能不太清楚。假设我修改了commit A,并将其强制提交到了远端,将这个新的修改设为A1吧。此时我在另外一台设备甲上本地有原本的commit A。如果这时候你直接执行git pull,会出现一个merge操作,因为本地原有的commit A和现在远端新的commit A1是不兼容的。
需要做的操作是,将这个另外一台设备甲上的本次仓库,调用git log查看历史记录,使用git reset --hard <commit id>
的方式回滚到另外一个早于commit A的提交,再执行git pull,此时就不会出现merge操作。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 慕雪的寒舍!
评论