在我提交所有内容后,我将.gitignore添加到我的项目中。现在我想运行如下命令:
git rm --cached *everything_listed_in_gitignore*
Run Code Online (Sandbox Code Playgroud)
如何做到这一点?先感谢您。
我从https://ardalis.com/how-to-make-git-forget-tracked-files-in-gitignore找到了另一种在任何操作系统中都效果更好的方法。
添加新规则到 .gitignore 后
git rm -r --cached .
git add .
Run Code Online (Sandbox Code Playgroud)
基本上,它会删除所有内容并将所有内容添加回来。添加时,Git会忽略基于.gitignore的文件
有一个较短的版本,答案取自here。
您还可以根据 .gitignore 从存储库中删除文件,而无需从本地文件系统中删除它们:
git rm --cached `git ls-files -i -X .gitignore`
Run Code Online (Sandbox Code Playgroud)
或者,在 Windows Powershell 上:
git rm --cached $(git ls-files -i -X .gitignore)
Run Code Online (Sandbox Code Playgroud)
我总是使用以下行来删除我的中列出的文件.gitignore:
grep -vP "^(#|\$)" .gitignore|sed "s/^\///"|xargs rm -f
Run Code Online (Sandbox Code Playgroud)
这将查找与以(注释)或空行开头的正则表达式匹配的行.gitignore不匹配( grep 的选项)的行。-v^(#|\$)#
然后将删除行开头的sed正斜杠。/
结果将传递给rm -fusing xargs,您可以将其替换为git rm --cached
笔记:
您的.gitignore文件可以包含诸如*.tmp忽略.tmp整个项目中的所有文件之类的条目。上面的命令只会*.tmp从根目录中删除文件。只有完整路径才会被正确处理。
| 归档时间: |
|
| 查看次数: |
2181 次 |
| 最近记录: |