Git:无法删除文件

4

当我尝试运行git cherry-pick <commit sha>命令时会出现这种情况。

  1. git cherry-pick eaf640bd3ce9f2a4e0650a0c9b9d0fbb920a77a9
  2. 错误:下列未追踪的工作树文件将被合并覆盖: myfile.java 请在合并之前移动或删除它们。 中止 致命:樱桃拣选失败

现在我想删除那个文件,因为我不再需要它。

  1. git rm myfile.java
  2. 这给我带来了一个错误:致命:路径规范'myfile.java'与任何文件都不匹配

但是在运行git status时,我确实看到了那个文件。如果我手动从磁盘中删除它,每次执行rm -f ./.git/index.lock时,它都会重新创建。

如何永久删除该文件而不必担心它?


1
咦?你为什么要删除 .git/ 目录下的文件?而且,rm 命令并不会创建文件。 - melpomene
运行 git status 后,该文件是被跟踪的、未被跟踪的还是什么状态? - fedepad
@fedepad 这是未被跟踪的。我可以通过rm命令删除它,但当我删除index.lock文件时,它仍会重新创建。 - wesleyy
是的,在未跟踪的情况下,只需使用rm命令即可。但如果它重新创建,那么可能会出现一些奇怪的问题... - fedepad
通常情况下,如果存在 .git/index.lock,则意味着 Git 命令仍在运行(使用 ps -xa 命令检查)或已崩溃。你应该先查看这个问题。 - Roland Smith
显示剩余2条评论
1个回答

1
第一个错误消息表示该文件未被跟踪,即它不是记录历史的一部分,git不知道它的存在。 git rm 出错的原因相同:你不能删除在仓库中不存在的文件。
简单地使用 rm myfile.java 就可以将其删除。

是的,但如果我再次进行挑选:'致命错误:无法创建'.../.git/index.lock':文件已存在。另一个 git 进程似乎正在该存储库中运行,例如由 'git commit' 打开的编辑器。请确保所有进程都已终止,然后重试。如果仍然失败,则可能在此存储库中崩溃了一个 git 进程:'手动删除文件以继续。 - wesleyy
@wesleyy 是否有其他的git进程正在运行? - melpomene
然后,如果我运行 rm -f ./.git/index.lock 删除 .lock 文件,myfile.java 就会再次被创建。 - wesleyy
有没有办法检查一下?我不认为还有其他的git进程在运行。我甚至重新启动了我的机器,确保没有任何进程在运行,然后再试了一遍。但结果还是一样的。 - wesleyy
1
@wesleyy 任何在系统启动时运行的服务或守护进程,任何由您的shell init文件(例如.profile.bash_profile.bashrc(如果您使用bash))启动的内容,任何包含在$PROMPT_COMMAND$PS1中的命令,... - melpomene
显示剩余8条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接