我意外地将一个目录添加到了应该提交到 git 的项目列表中。现在,当我尝试运行 git rm dirname 时,我收到错误
rm 'dirname'
fatal: git rm: 'dirname': Is a directory
我尝试了以下命令git rm -rf dirname
和git rm dirname --force
,但这些都不起作用。它们都产生了相同的错误消息。
我如何防止 dirname 被提交?
我正在使用 git 版本 1.7.0.4
谢谢
补充笔记
好的,它似乎git rm -rf dirname
只在某些条件下有效。我进行了一些测试,通常它可以工作。但是,如果它本身是一个单独控制的 git 存储库,并且其中包含 .git 目录,它将失败。dirname
我之所以设置它,是因为dirname
它是一个由我的许多项目共享的 git 控制框架。
答案1
答案2
从来没有遇到过这个问题(所以不保证这会起作用和/或不会破坏您的数据 - 最好备份您的存储库!),但有一些选择:
选项 1(如果您尚未在本地提交):
git stash
您所做的任何有价值的更改。git reset
你的树(可能需要做git reset --hard HEAD
)git unstash
您存储的更改并小心地添加/提交它们。
选项 2(如果您尚未在本地提交,或者您已提交但尚未推送到远程):
git clone
存储库的干净版本- 小心地将你的更改复制到那里
- 小心添加/提交您的更改。
选项 3 (会让你的仓库变得混乱):
- 将您的错误提交到存储库。
- 使用以下方法进行清理
git rm -r
(如果该目录的内容很大,您显然不想这样做。)