我正在尝试从git中删除.sass-cache文件夹中的所有内容。 /app/assets/stylesheets/.sass-cache
是文件夹的完整路径。我相信git rm -r --cached folder
是用于从git中删除文件夹内容的命令,但是当我cd进入app/assets/stylesheets
并运行以下命令时:
git rm -r --cached .sass-cache
我收到以下错误:
致命:pathspec'.sass-cache'与任何文件都不匹配
所以我认为“。”一开始是让它寻找文件。我至少在正确的轨道上吗?
答案 0 :(得分:0)
好像您的索引中没有文件(又称登台区域,又称缓存)。当文件不在中时,该文件将不在您提交的 next 中,git rm --cached
无法将其从索引/暂存中删除-area /缓存(不在其中)。请注意,git commit
总是根据索引中当前的内容进行 new 次提交,因此索引通常包含您刚刚从某些提交中检出的每个文件的副本。
Git会针对您的工作树中存在但未包含在索引中的文件进行抱怨,说该文件是未跟踪的。 (请注意,这些文件通常在当前提交中也是 not 。 1 。)要让Git特别声明 not 抱怨此类文件,您可以列出它们(按路径名或模式)在.gitignore
文件中。在这种情况下,请添加:
app/assets/stylesheets/.sass-cache/*
或者只是:
app/assets/stylesheets/.sass-cache/
到顶级.gitignore
文件,并在必要时创建该文件,足以告诉Git停止抱怨此类文件(并自动禁止将它们自动添加到索引中使用“添加所有文件”操作。
1 运行git checkout branch
会将命名分支上 tip commit 中包含的所有文件提取到索引和工作树中。因此,现在在索引的工作树和中的文件必须存在,因为它在提交中。在运行git checkout branch
之前,文件必须已经存在于工作树中,但在索引中为 not 。
如果您git checkout branch
然后成功运行git rm --cached file
,则该一般规则将失败。在这种特殊情况下,提示提交中名为 file
,而索引和工作树中均为 。然后,将其从索引中删除,并将其保留在工作树中。您进行的下一次提交将省略,但该文件仍在当前提交中,并且git status
将显示 file
将由下一个提交删除(的确如此:它在当前提交中,不会在下一个提交中,因此当前提交和下一个提交之间的区别将包括删除文件 file
)。