簡體   English   中英

git rm - 緩存.gitignore中列出的所有內容

[英]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
  1. 這將在.gitignore中找到與( -v選項為grep)匹配的正則表達式^(#|\\$)匹配以# (注釋)或空行開頭的行的行。

  2. 然后sed將在行的開頭刪除正斜杠/

  3. 結果使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM