簡體   English   中英

使用 git rm 命令刪除 .gitignore 中列出的文件

[英]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 問題-您在問為什么您嘗試的方法不起作用,而我們卻沒有”實際上不知道您要做什么。 下面討論了想到的兩種可能性:

  1. 如果您的意圖是在 repo 中沒有README.md ,只需git rm它,然后提交/推送/等。

  2. 如果您確實希望在 repo 中使用它,則不應將列在.gitignore文件中。

  3. 如果您想刪除除少數文件之外的所有內容(並且它們是干凈的,因為沒有未提交的更改),您可能會發現刪除這些文件更容易,然后只需查看您想要保留的文件即可。 類似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

  4. 如果您只想刪除特定文件,您可以使用通配符來限制它們。 例如, git rm --dry-run [0-9a-zA-QS-Z]*不會觸及任何以R開頭的文件。 你會注意到我在這里使用了--dry-run因為你可能想在允許它實際刪除之前檢查這個選項。 一旦您感到滿意,它就會做正確的事情,只需在沒有該選項的情況下再次運行它。

如果這是您想要實現的其他目標,如果您可以擴展它會很方便。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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