3

我已经这样做了 100 次。我从目录中删除了一个文件,然后运行 ​​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 theme/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 不知道也不会删除它。我被卡住了,我该如何解决?

4

3 回答 3

9

一个快速而肮脏的解决方案是添加回文件并使用

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 的新文件不受影响。

于 2013-01-21T17:45:15.140 回答
1

git rm 手册页描述了几种删除工作树中不再存在的文件的方法。

将来,删除文件git rm比单独删除更简单。

于 2013-01-21T17:44:57.970 回答
0

当您删除不使用 gitgit rm命令的目录时,此追加。

我做了 git stash

它恢复了我使用rm而不是删除的文件git rm

事实上,我首先检查了最后一个哈希值,但我认为这不是必需的。

于 2018-05-28T15:38:16.803 回答