git rm --cached 命令,最全詳細講解
git rm --cached
是 Git 中的一個命令,用於從版本控制中移除文件,但保留文件在本地工作目錄中的副本。這個命令有以下幾個關鍵點:
-
從版本控制中移除:
當你執行git rm --cached <file>
時,Git會將指定的<file>
從當前的索引(也稱爲暫存區)中刪除。這意味着該文件將不再被 Git 跟蹤和管理。 -
保留本地文件:
與普通的git rm
命令不同,--cached
選項使得 Git 只是從版本控制中移除文件,而不會從你的本地工作目錄中刪除實際的文件。因此,即使文件在 Git 中被刪除,你仍然可以在你的文件系統中看到並使用它。 -
用途:
這個命令常用於以下幾種情況:- 不想跟蹤特定的文件或文件夾,例如大型數據文件、自動生成的文件或者敏感信息。
- 已經誤將不應該被版本控制的文件添加到了 Git 中,需要將其從版本控制中移除。
- 調整
.gitignore
文件,使得新的忽略規則生效。有時候,即使你在.gitignore
中添加了規則,已經追蹤的文件依然會被提交。在這種情況下,你需要先使用git rm --cached
移除這些文件,然後再提交更改。
-
工作流程:
使用git rm --cached
的典型工作流程如下:- 確定你要從版本控制中移除的文件。
- 執行
git rm --cached <file>
。 - 如果需要,更新你的
.gitignore
文件以確保 Git 不會在將來重新跟蹤這個文件。 - 提交更改:
git commit -m "Remove <file> from version control but keep locally"
。 - 推送更改到遠程倉庫(如果適用):
git push
.
注意,執行 git rm --cached
後,雖然文件在本地工作目錄中仍然存在,但在下次執行 git add .
或 git commit
時,這些文件不會被包含在內。如果你想再次將這些文件添加到版本控制中,你需要先移除 .gitignore
中的相關規則(如果有的話),然後使用 git add <file>
添加它們。
舉個栗子
修改.gitignore文件
提交更改
後悔了怎麼辦?
如果你使用了 git rm --cached
命令並遇到了錯誤,或者你改變了主意不想保留這次更改,你可以通過以下步驟放棄此次更改:
-
檢查當前狀態:
首先,使用git status
命令來查看你的工作目錄和暫存區的狀態。這將幫助你瞭解哪些文件被修改或刪除。 -
撤銷暫存區的更改:
如果你想撤銷對暫存區中文件的更改(包括使用git rm --cached
刪除的文件),你可以使用git reset
命令。例如,如果你想恢復所有在暫存區中的更改,可以使用以下命令:git reset
或者,如果你想只恢復某個特定文件的更改,可以使用:
git reset <file>
-
撤銷工作目錄的更改:
如果你在執行git rm --cached
之後還進行了其他操作,比如修改或刪除了文件,這些更改可能已經反映在工作目錄中。要撤銷這些更改,你可以使用以下命令:git checkout -- <file>
這個命令會將指定文件恢復到最後一次提交時的狀態。
-
檢查狀態確認更改:
在執行上述命令後,再次運行git status
來確認你的工作目錄和暫存區是否回到了你想要的狀態。
通過以上步驟,你應該能夠放棄使用 git rm --cached
命令進行的更改,並恢復到原來的狀態。請注意,這些操作不會影響已經提交的歷史記錄,只會改變你本地的工作目錄和暫存區的狀態。
歡迎關注公-衆-號【TaonyDaily】、留言、評論,一起學習。
Don’t reinvent the wheel, library code is there to help.
文章來源:劉俊濤的博客
若有幫助到您,歡迎點贊、轉發、支持,您的支持是對我堅持最好的肯定(_)