如何讓Git忘記一個現在在.gitignore中的已跟蹤檔案
如果您曾經嘗試將檔案新增到您的 Git 儲存庫(例如,您不希望跟蹤的配置檔案),後來才意識到它們不應該被新增,那麼您可能已經建立了您的.gitignore檔案。但是,不知何故,您會發現 Git 仍然跟蹤它們,即使它們打算新增到.gitignore中。這很煩人,但幸運的是,Git 有辦法永遠忘記這些已跟蹤的檔案。在本文中,我將提供一個分步指南來解決這個常見的 Git 問題。
為什麼 Git 保留被忽略的檔案?
任何進入 Git 的內容都會將其檔案新增到 Git 的索引中,並建立對檔案所做更改的記錄。但是,它們僅透過.gitignore檔案阻止新檔案新增到索引中。一旦放入.gitignore中,這還不夠——除非您指定此命令,否則 Git 仍將跟蹤該檔案。為此,您必須告訴 Git 忘記已跟蹤的檔案。分步指南:讓 Git 忘記 .gitignore 中的已跟蹤檔案
以下是取消跟蹤您已提交併希望忽略的檔案的步驟步驟 1:將檔案新增到 .gitignore
如果您尚未將檔名或模式新增到.gitignore,請將檔案新增到.gitignore。這樣,在成功忘記檔案後,Git 不會在任何未來的提交中觸及該檔案。
開啟您的.gitignore檔案並新增以下行(將file_name替換為您的檔名)
file_name
步驟 2:停止 git 跟蹤檔案
其次,您希望從 Git 的索引中刪除該檔案,以便 Git 可以“忘記”該檔案。請記住,此命令不會從您的工作目錄中刪除該檔案,它只會從跟蹤中刪除該檔案。git rm --cached file_name
替換file_name,使用您希望 Git 忘記的檔案的名稱。
命令解釋
git rm --cached 從您的索引中刪除檔案,但不會從您的專案資料夾中刪除。這意味著 Git 將停止跟蹤該檔案,但該檔案仍以某種方式存在於您的本地目錄中。步驟 3:提交更改
在您將檔案從索引中取出後,我們必須實際提交這些更改以更新 git 儲存庫。使用以下命令git commit -m "Remove tracked file that is now in .gitignore"
Git 知道,由於您不再跟蹤該檔案,因此它將不再新增到索引中,因此它將在本次提交中告訴 Git:您不再希望跟蹤此檔案。
步驟 4:推送這些更改(如果您正在使用遠端儲存庫)
如果您正在使用遠端儲存庫(如 GitHub、GitLab 等),請注意不要忽略推送更改以更新遠端儲存庫。git push
要停止跟蹤檔案並更新遠端儲存庫,我們只需執行此命令。
示例:忽略匹配模式的多個檔案
要從 Git 中刪除多個檔案,匹配某個模式,請將模式新增到.gitignore,並使用git rm --cached和萬用字元。例如,如果您希望 Git 停止跟蹤所有 .log 檔案,請將*.log新增到 .gitignore
*.log
然後,使用以下命令從索引中刪除所有 .log 檔案
git rm --cached *.log
完成後,提交併推送更改以結束。
重要說明:不要丟失本地更改
如果您希望 Git 忘記檔案,但仍然不想丟失任何本地更改,請確保您已提交這些檔案上的任何工作。在從 Git 索引中刪除檔案並將它們新增到.gitignore時保持本地檔案不受損害,這希望永遠不會發生,但備份任何重要工作總是一個好主意。步驟總結
- 將不需要的檔案新增到.gitignore。
- 使用git rm --cached file_name從 Git 索引中刪除檔案。
- 使用git commit -m "Remove tracked file that is now in .gitignore"提交更改。
- 如果您正在使用遠端儲存庫,請推送更改。
如果您按照這些步驟操作,那麼您可以確保 Git 將停止跟蹤您已在.gitignore中設定的檔案。
提示
如果您有很多在最初被跟蹤後需要忽略的檔案,一種快速的方法讓 Git “重新評估”.gitignore是刪除索引中的所有跟蹤檔案,然後僅重新新增需要的檔案
git rm -r --cached .
git add .
git commit -m "Reapply .gitignore settings"
以下命令序列臨時刪除 Git 的索引,並根據當前.gitignore檔案重新新增所有檔案,以便它不會跟蹤任何被忽略的檔案。
透過這些步驟,您將避免將不必要的檔案跟蹤到 Git 儲存庫中,從而節省空間並清理空間。編碼愉快!
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP