在将目录添加到Git仓库后忽略它

101

我学会了如何在git中排除整个目录(在.gitignore文件中添加一行bin/)。我也学会了如何忽略"事后"添加到git中的文件

git rm --cached <filename>

如何忽略整个目录(例如bin/)在它被添加到Git仓库后?我尝试过git rm --cached bin/,但是收到了错误:

fatal: pathspec 'bin/' did not match any files

当我在根目录(.git所在的位置)尝试使用git rm --cached MyProj/bin/时,错误不同:

fatal: not removing 'MyProj/bin/' recursively without -r

这是什么意思?我需要现在提交和/或分支吗?

5
注意我的回答中的 -r 标签。你需要在使用 recursive 时加上它 :) - Nic
@melee 它起作用了!但现在我有另一个问题。请查看更新。 :) - WinWin
2个回答

154

我能够通过在仓库根目录使用 git rm -r --cached bin/ 命令(请注意递归选项-r)让它起作用 - 你是在说要找到bin目录并将其取消跟踪吗?

在反映出这种排除之前,您必须commit提交。

我刚看到你正在使用Windows。这是在OSX终端中的操作,提醒一下。


是的,我在使用Windows,但我正在使用Cygwin,它提供了整个类Unix的体验...请看我的更新。我不确定您所说的“查找”是什么意思。在我的项目下只有一个bin/子目录。然而,.git目录是我的项目目录的一个同级目录(即,整个Git跟踪始于上面的一个目录,其中可能包含多个项目)。感谢并给您加一分。 - WinWin
@WinWin 很抱歉,我当时在用手机,错过了你的编辑部分。很高兴你最终解决了问题! - Nic
10
我在包含.git文件夹的根目录中尝试了git rm -r --cached <folder_name>,但仍收到错误消息:“fatal: pathspec 'folder_name' did not match any files”。这特别奇怪,因为我之前可以按“tab”键自动完成文件夹名称。我正在使用终端。有任何想法吗? - hyang123
3
当你的 bin 目录为空或者是未被跟踪的文件夹时,会出现这种情况。请使用 <code>git status</code> 命令进行检查。 - nofomopls
感谢 @ducanhng -- 在使用 git add folder/. 忽略文件夹之前,先将其添加到未跟踪的文件夹列表中。 - mujaffars
显示剩余3条评论

12

在Windows上:

git rm -r --cached ./FOLDERNAME/

然后进行其他操作(添加提交推送)。

(请注意,在Windows上,您应该在文件夹名称前使用./,就像上面一样。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接