git rm --cached 中列出的所有内容。git忽略
git rm --cached everything that is listed in .gitignore
我在提交所有内容后将 .gitignore 添加到我的项目中。现在我想 运行 像这样的命令:
git rm --cached *everything_listed_in_gitignore*
如何实现?提前谢谢你。
我总是使用以下行来删除我 .gitignore
中列出的文件:
grep -vP "^(#|$)" .gitignore|sed "s/^\///"|xargs rm -f
这将在 .gitignore
中找到不匹配的行(grep 的 -v
选项)正则表达式 ^(#|$)
匹配以 [=15 开头的行=](注释)或空行。
然后 sed
将删除行首的正斜杠 /
。
结果使用 xargs
传递给 rm -f
,您可以将其替换为 git rm --cached
注:
您的 .gitignore
文件可以包含 *.tmp
之类的条目,以忽略整个项目中的所有 .tmp
文件。上面的命令只会从根目录中删除 *.tmp
个文件。只有完整路径才会被正确处理。
我从 https://ardalis.com/how-to-make-git-forget-tracked-files-in-gitignore 找到了另一种在任何操作系统中都运行得更好的方法。
向 .gitignore 添加新规则后
git rm -r --cached .
git add .
基本上,它会删除所有内容并重新添加所有内容。添加时,Git会忽略基于.gitignore
的文件
有一个更短的版本,答案来自here。
您还可以根据您的 .gitignore 从存储库中删除文件,而不会将它们从本地文件系统中删除:
git rm --cached `git ls-files -i -X .gitignore`
或者,或者,在 Windows Powershell 上:
git rm --cached $(git ls-files -i -X .gitignore)
我在提交所有内容后将 .gitignore 添加到我的项目中。现在我想 运行 像这样的命令:
git rm --cached *everything_listed_in_gitignore*
如何实现?提前谢谢你。
我总是使用以下行来删除我 .gitignore
中列出的文件:
grep -vP "^(#|$)" .gitignore|sed "s/^\///"|xargs rm -f
这将在
.gitignore
中找到不匹配的行(grep 的-v
选项)正则表达式^(#|$)
匹配以 [=15 开头的行=](注释)或空行。然后
sed
将删除行首的正斜杠/
。结果使用
xargs
传递给rm -f
,您可以将其替换为git rm --cached
注:
您的 .gitignore
文件可以包含 *.tmp
之类的条目,以忽略整个项目中的所有 .tmp
文件。上面的命令只会从根目录中删除 *.tmp
个文件。只有完整路径才会被正确处理。
我从 https://ardalis.com/how-to-make-git-forget-tracked-files-in-gitignore 找到了另一种在任何操作系统中都运行得更好的方法。
向 .gitignore 添加新规则后
git rm -r --cached .
git add .
基本上,它会删除所有内容并重新添加所有内容。添加时,Git会忽略基于.gitignore
的文件有一个更短的版本,答案来自here。
您还可以根据您的 .gitignore 从存储库中删除文件,而不会将它们从本地文件系统中删除:
git rm --cached `git ls-files -i -X .gitignore`
或者,或者,在 Windows Powershell 上:
git rm --cached $(git ls-files -i -X .gitignore)