我刚将以下行添加到.gitignore
*.pyc
1)然后我运行了命令
git rm -r --cached *.pyc
但是它没有递归地工作,而是我得到了错误fatal: pathspec 'RepoName.pyc' did not match any files
2)更糟糕的是,当我下次尝试
时git add .
由于.gitignore
而通常未添加的所有文件都已暂存以进行提交。然后我删除了*.pyc
行,但这种行为仍在继续。
有谁知道发生了什么事?
注意:
运行git status
时,我没有看到“通常被忽略”的文件为未跟踪文件。
答案 0 :(得分:3)
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
仅从索引中删除,而不是从工作树中删除。