![](/img/trans.png)
[英]git removing files that are not in .gitignore with git rm command
[英]Files listed in .gitignore are removed with git rm command
我已經設置了一個.gitignore
文件,其中只有一個文件:
cat .gitignore
README.md
.gitignore
文件具有以下權限:
ls -l README.md
-rw-r--r-- 1 tdun0002 1049089 113 Mar 21 18:54 README.md
我不確定問題是什么,但是當我執行git rm --force *
所有內容都被刪除,包括.gitignore
文件中列出的README.md
文件。
我究竟做錯了什么?
.gitignore
文件是一種指定哪些未跟蹤文件將保持未跟蹤狀態的方法,即使您嘗試添加它們(並且在嘗試使用這些更改的操作之前,應該完全提交對其的任何更改通常是一個好主意)。 這不是告訴一般git
命令不要對文件做任何事情的方法。
特別是,如果在將文件添加到.gitignore
時文件已經在 repo 中,則不會對其產生任何影響。
由於您的README.md
在您將其添加到.gitignore
時已經在存儲庫中,因此它仍然是一個跟蹤文件。
雖然這可能無法解決您的實際問題:我很難弄清楚您的意圖是什么,因為這似乎是一個 XY 問題-您在問為什么您嘗試的方法不起作用,而我們卻沒有”實際上不知道您要做什么。 下面討論了想到的兩種可能性:
如果您的意圖是在 repo 中沒有README.md
,只需git rm
它,然后提交/推送/等。
如果您確實希望在 repo 中使用它,則不應將其列在.gitignore
文件中。
如果您想刪除除少數文件之外的所有內容(並且它們是干凈的,因為沒有未提交的更改),您可能會發現刪除這些文件更容易,然后只需查看您想要保留的文件即可。 類似git rm . ; git checkout HEAD -- README.md
東西git rm . ; git checkout HEAD -- README.md
git rm . ; git checkout HEAD -- README.md
git rm . ; git checkout HEAD -- README.md
。
如果您只想刪除特定文件,您可以使用通配符來限制它們。 例如, git rm --dry-run [0-9a-zA-QS-Z]*
不會觸及任何以R
開頭的文件。 你會注意到我在這里使用了--dry-run
因為你可能想在允許它實際刪除之前檢查這個選項。 一旦您感到滿意,它就會做正確的事情,只需在沒有該選項的情況下再次運行它。
如果這是您想要實現的其他目標,如果您可以擴展它會很方便。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.