git rm --cached 命令,最全詳細講解

git rm --cached 命令,最全詳細講解

git rm --cached 是 Git 中的一個命令,用於從版本控制中移除文件,但保留文件在本地工作目錄中的副本。這個命令有以下幾個關鍵點:

  1. 從版本控制中移除
    當你執行 git rm --cached <file> 時,Git會將指定的 <file> 從當前的索引(也稱爲暫存區)中刪除。這意味着該文件將不再被 Git 跟蹤和管理

  2. 保留本地文件
    與普通的 git rm 命令不同,--cached 選項使得 Git 只是從版本控制中移除文件,而不會從你的本地工作目錄中刪除實際的文件。因此,即使文件在 Git 中被刪除,你仍然可以在你的文件系統中看到並使用它。

  3. 用途
    這個命令常用於以下幾種情況:

    • 不想跟蹤特定的文件或文件夾,例如大型數據文件、自動生成的文件或者敏感信息。
    • 已經誤將不應該被版本控制的文件添加到了 Git 中,需要將其從版本控制中移除
    • 調整 .gitignore 文件,使得新的忽略規則生效。有時候,即使你在.gitignore中添加了規則,已經追蹤的文件依然會被提交。在這種情況下,你需要先使用 git rm --cached 移除這些文件,然後再提交更改。
  4. 工作流程
    使用 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> 添加它們。

舉個栗子

image-20231229143500165

image-20231229143515165

修改.gitignore文件

image-20231229143602274

image-20231229143539745

提交更改

image-20231229143629535

後悔了怎麼辦?

如果你使用了 git rm --cached 命令並遇到了錯誤,或者你改變了主意不想保留這次更改,你可以通過以下步驟放棄此次更改:

  1. 檢查當前狀態
    首先,使用 git status 命令來查看你的工作目錄和暫存區的狀態。這將幫助你瞭解哪些文件被修改或刪除。

  2. 撤銷暫存區的更改
    如果你想撤銷對暫存區中文件的更改(包括使用 git rm --cached 刪除的文件),你可以使用 git reset 命令。例如,如果你想恢復所有在暫存區中的更改,可以使用以下命令:

    git reset
    

    或者,如果你想只恢復某個特定文件的更改,可以使用:

    git reset <file>
    
  3. 撤銷工作目錄的更改
    如果你在執行 git rm --cached 之後還進行了其他操作,比如修改或刪除了文件,這些更改可能已經反映在工作目錄中。要撤銷這些更改,你可以使用以下命令:

    git checkout -- <file>
    

    這個命令會將指定文件恢復到最後一次提交時的狀態。

  4. 檢查狀態確認更改
    在執行上述命令後,再次運行 git status 來確認你的工作目錄和暫存區是否回到了你想要的狀態。

通過以上步驟,你應該能夠放棄使用 git rm --cached 命令進行的更改,並恢復到原來的狀態。請注意,這些操作不會影響已經提交的歷史記錄,只會改變你本地的工作目錄和暫存區的狀態。



歡迎關注公-衆-號【TaonyDaily】、留言、評論,一起學習。

公衆號

Don’t reinvent the wheel, library code is there to help.

文章來源:劉俊濤的博客


若有幫助到您,歡迎點贊、轉發、支持,您的支持是對我堅持最好的肯定(_)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章