删除文件系统中不存在但合并后留在 git 中的 ghost 文件?
Deleting ghost files that don't exist in the file system but are left in git after a merge?
所以我只是在两个存储库之间进行了合并。其中一个文件名为 FOOBar,另一个文件名为 FooBar。合并很顺利,它正确地识别出这两个文件是彼此重命名的,最后我将所有更改合并到 FooBar,因为这符合命名约定。完成并提交合并后,执行 "git status" 显示更改未暂存以提交指向 FOOBar。除了 FOOBar 不再存在,只剩下 FooBar。
我已经尝试了 "git add ."、"git checkout -- ."、"git clean -f"、"rm FOOBar"、"git restore .",但是在所有这些之后,文件仍然显示为未暂存的提交但不存在于文件系统中。
如何删除 git 中的这些文件?
我认为大多数顶级 git 命令对它们在磁盘上找到的文件进行操作,然后在索引中找到正确的文件进行操作。由于您在磁盘上的文件大小写错误,这可能会出错。
无论如何,这只是猜测。
这里是去掉它的方法,你必须直接操作索引。
以下命令应该删除文件:
git update-index --remove FOOBar
除了 Lasse 的回答之外,您还可以 运行 git clean -df
这将清除已删除目录和文件的工作树。 Here's a link to the docs.
所以我只是在两个存储库之间进行了合并。其中一个文件名为 FOOBar,另一个文件名为 FooBar。合并很顺利,它正确地识别出这两个文件是彼此重命名的,最后我将所有更改合并到 FooBar,因为这符合命名约定。完成并提交合并后,执行 "git status" 显示更改未暂存以提交指向 FOOBar。除了 FOOBar 不再存在,只剩下 FooBar。
我已经尝试了 "git add ."、"git checkout -- ."、"git clean -f"、"rm FOOBar"、"git restore .",但是在所有这些之后,文件仍然显示为未暂存的提交但不存在于文件系统中。
如何删除 git 中的这些文件?
我认为大多数顶级 git 命令对它们在磁盘上找到的文件进行操作,然后在索引中找到正确的文件进行操作。由于您在磁盘上的文件大小写错误,这可能会出错。
无论如何,这只是猜测。
这里是去掉它的方法,你必须直接操作索引。
以下命令应该删除文件:
git update-index --remove FOOBar
除了 Lasse 的回答之外,您还可以 运行 git clean -df
这将清除已删除目录和文件的工作树。 Here's a link to the docs.