我已经完成了这几百次。 我从目录中删除了一个文件然后运行git status看起来很好。
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: themes/custom/gitb/templates/views-view-field--field-overall-rating.tpl.php
#
然后我跑了 git rm themes / custom / gitb / templates / views-view-field - field-overall-rating.tpl.php 并收到错误消息
error: pathspec 'themes/custom/gitb/templates/views-view-field--field-overall-rating.tpl.php' did not match any file(s) known to git.
git status“知道”该文件,但git rm没有,也不会删除它。我被困住了,我该如何解决这个问题?
答案 0 :(得分:8)
快速而肮脏的解决方案是添加文件并使用
git rm themes/custom/gitb/templates/views-view-field--field-overall-rating.tpl.php
删除它。
git rm
也会从文件系统中删除该文件,因此您不需要(通常也不应该)手动删除该文件。
修改强>
更简洁的方法是让git使用
注意丢失的文件git add -u
或
git commit -a
从git-add
的文档中,这里是-u
选项的说明
仅匹配索引中已跟踪的文件 而不是工作树。这意味着它永远不会是新的 文件,但它将修改跟踪文件的新内容 并且它将从索引中删除相应的文件 工作树中的文件已被删除。
这是-a
git-commit
选项的一个
告诉命令自动暂存已修改的文件 并删除,但你没有告诉git的新文件不是 影响。
答案 1 :(得分:1)
git rm man page描述了删除工作树中不再存在的文件的几种方法。
将来,使用git rm
删除文件比单独删除文件更简单。
答案 2 :(得分:0)
当您删除不使用git&#39; s git rm
命令的目录时,会附加此消息。
我做到了 git stash
它恢复了文件
我使用rm
而不是git rm
删除了。
事实上,我首先检查了最后一个哈希,但我不相信这是必需的。