[英]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
中找到與( -v
選項為grep)匹配的正則表達式^(#|\\$)
匹配以#
(注釋)或空行開頭的行的行。
然后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的文件
有一個較短的版本,答案取自這里 。
您還可以根據.gitignore從存儲庫中刪除文件,而不從本地文件系統中刪除它們:
git rm --cached `git ls-files -i -X .gitignore`
或者,在Windows Powershell上:
git rm --cached $(git ls-files -i -X .gitignore)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.