【问题标题】:Ignoring a directory from a Git repo after it's been added添加后忽略 Git 存储库中的目录
【发布时间】:2011-09-30 21:48:49
【问题描述】:

我学习了how to exclude an entire directory in git(在.gitignore 中添加一行bin/)。而且我学到了how to ignore files "after the fact"(即在它们被添加到git之后):

git rm --cached <filename>

在将整个目录(例如bin/添加到 Git 存储库之后,如何忽略它?

我试过git rm --cached bin/,但我收到的只是错误:

致命:pathspec 'bin/' 没有匹配任何文件

当我尝试(在存在 .git 的根目录)git rm --cached MyProj/bin/ 时,错误是不同的:

致命:未删除“MyProj/bin/” 递归没有 -r

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

【问题讨论】:

  • 请注意我的答案中的-r 标签。您必须将其用于recursive :)
  • @melee 成功了!但现在我有另一个问题。见更新。 :)

标签: git gitignore


【解决方案1】:

我能够在 repo 的根目录中使用 git rm -r --cached bin/(注意递归的 -r)来解决这个问题 - 您是在谈论 找到 bin 目录并取消跟踪它们吗? p>

您必须commit 才能反映排除。

我刚刚看到您在 Windows 上。这是在 OSX 的终端中,只是提醒一下。

【讨论】:

  • 是的,我在 Windows 上,但我使用的是 Cygwin,它提供了完整的类 Unix 体验……请参阅上面的更新。我不确定我理解你所说的“寻找”是什么意思。我的项目下真的只有一个bin/ 子目录。但是,.git 目录是我项目目录的兄弟(即整个 git 跟踪从上面的一个目录开始,该目录可能包含多个项目)。感谢和 +1 的见解。
  • 嗯。这是一个想法;触摸或编辑 bin 目录中的文件之一,然后尝试获取状态。如果这有效,他们应该不再跟踪。
  • @WinWin 对此感到抱歉,我正在打电话,错过了您的部分编辑。很高兴你能弄明白!
  • 我已经在根文件夹(包含 .git 文件夹)中尝试了 git rm -r --cached &lt;folder_name&gt;,但我仍然收到错误 fatal: pathspec 'folder_name' did not match any files。这特别奇怪,因为我能够按“tab”来自动完成文件夹的名称。我正在使用终端。有什么想法吗?
  • @haopei:当您的 bin 目录为空或未跟踪文件夹时会发生这种情况。请通过 git status 进行检查。
【解决方案2】:

在窗户上:

git rm -r --cached ./FOLDERNAME/

然后做其他事情。 (addcommitpush

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

【讨论】:

    猜你喜欢
    • 2012-06-30
    • 1970-01-01
    • 2013-03-09
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    相关资源
    最近更新 更多