我刚刚在.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/