我不小心将目录添加到我应该提交的项目列表中。 现在,当我尝试运行一个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只能在某些条件下工作。 我跑了一些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清理 (如果那个目录的内容很大,你不想这样做。)