有的时候,会出现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操作。