我刚刚在.gitignore中添加了以下行

*.pyc

1)然后我运行命令
git rm -r --cached *.pyc

但是它没有递归地工作,我得到了错误fatal: pathspec 'RepoName.pyc' did not match any files
2)更糟的是,当我下一次尝试
git add .

由于我的.gitignore而通常不添加的所有文件都已暂存以提交。然后我删除了*.pyc行,但此行为仍在继续。
有人知道怎么回事吗?
注:
运行git status时,我看不到“通常忽略”的文件是未跟踪的文件。

最佳答案

shell通配符不能递归工作。在执行got之前,它们由shell在当前目录的上下文中展开。你需要像这样的东西

 ls-files --other --ignored --exclude-standard -z | xargs -0 git rm --cached

选项说明:
ls-files --other --ignored --exclude-standard显示应忽略的文件。
-z对输出使用nul(\0)分隔符,以避免文件名中出现空格问题。
xargs -0对从stdin读取的每个nul分隔的记录运行下一个命令。
git rm --cached仅从索引中移除,而不是从工作树中移除。

关于git - Git难题:rm -r和.gitignore不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22761811/

10-15 16:32