不能混淆一个目录

我不小心将目录添加到我应该提交的项目列表中。 现在,当我尝试运行一个git rm dirname时,出现错误

rm 'dirname' fatal: git rm: 'dirname': Is a directory 

我尝试了下面的命令git rm -rf dirnamegit rm dirname --force ,但是这些都不起作用。 他们都产生了相同的错误信息。

如何防止提交dirname?

我正在使用git版本1.7.0.4

谢谢

补充笔记

好吧,看来git rm -rf dirname只能在某些条件下工作。 我跑了一些testing,通常它的工作。 但是,如果dirname本身是一个单独控制的git仓库,并且存在一个.git目录,它将会失败。 我有这个设置,因为dirname是由我的许多项目共享的git控制的框架。

禁止任何权限问题…

git rm --cached -r dirname

这应该从分阶段提交中删除目录。

在这一点上,它应该是未被跟踪的,它可能是一个好主意,设置为通过gitignore忽略。

从来没有这个问题(所以没有承诺,这将工作和/或不破坏你的数据 – 工作在你的仓库的备份将是最好的!),但一些select:


选项1(如果您还没有在本地提交):

  • git stash您所做的任何有价值的更改。
  • git reset你的树(可能需要做git reset --hard HEAD
  • git unstash你的隐藏的变化,并仔细地添加/提交它们。

选项2(如果你还没有在本地提交,或者如果你有,但还有一个你还没有推迟的远程):

  • git clone版本库的干净版本
  • 小心地在那里复制你的修改
  • 仔细地添加/提交您的更改。

选项3(这使你的回购混乱):

  • 把你的错误提交到存储库。
  • 使用git rm -r清理

(如果那个目录的内容很大,你不想这样做。)