在處理 Git 存儲庫時,積累未跟踪的文件和目錄是很常見的,這些文件和目錄不是存儲庫版本控制系統的一部分。這些可能包括臨時文件、構建產物或其他本地創建的未提交文件。隨著時間的推移,這些文件可能使工作目錄變得混亂,使其更難保持乾淨和有組織的工作區。
為了解決這個問題,Git 提供了 git clean
命令,用於刪除未跟踪的文件和目錄。在本指南中,我將向您展示如何安全地使用 git clean
,其不同選項以及避免意外刪除文件的最佳實踐,同時保持 Git 存儲庫整潔。為了進一步學習,我建議參加我們的 Git 基礎 和 GitHub 概念介紹 課程,了解版本控制以及 Git 和 GitHub 之間的區別。
了解 git clean
git clean
命令是 Git 中一個有用的工具,用於從工作目錄中刪除未被追蹤的文件。 當您需要將工作目錄重置為原始狀態時,例如在切換分支之前或運行生成臨時文件的構建過程後,git clean
命令就很有用。 然而,應該謹慎使用 git clean
命令,因為它會永久刪除未被追蹤的文件和目錄,而不是將它們移動到垃圾桶或回收站中。
與 git reset
或 git checkout
不同,它們修改被追蹤的文件,git clean
嚴格處理未受版本控制的文件和目錄。這包括:
-
構建過程生成的臨時文件
-
日誌文件或緩存數據
-
在 .gitignore 中列出的文件(如果使用
-x
明確指定)
git clean
命令對於維護整潔的工作目錄很有用,它與其他 Git 命令如 git reset
和 git checkout
一起管理已追蹤文件的變更。
我發現 完整的 Git Cheat Sheet 是一個方便的參考指南,包含常見的 Git 命令。
git clean 的常見用途
git clean
命令是一個有用的工具,用於維護乾淨的工作目錄。以下是一些常見的使用情況,可以安全地刪除不必要的文件和目錄。
刪除未追蹤的文件
在 Git 存儲庫中工作時,未追蹤的文件可能會隨著時間的推移而累積。以下選項有助於刪除它們:
-
git clean -f
: 強制刪除未追蹤的文件。 -
git clean -fd
: 刪除未追蹤的文件和未追蹤的目錄。 -
git clean -fx
: 刪除未追蹤和被忽略的文件,如.gitignore
中列出的文件。
然而,在使用-fx
选项时,您应当小心,因为它也会删除被忽略的文件。在执行命令之前,始终使用干跑(git clean -n
)进行验证。
交互模式
使用git clean -i
命令可以启用交互模式,允许用户有选择地删除未跟踪的文件。当您希望更多地控制要删除哪些文件或目录时,这种模式非常有用。
假设您正在一个项目中工作,在该项目中您已经保存了Olympics
文件夹中的更改。然而,您已经添加了名为2024_Data
和2025_Data
的新数据源。如果运行git clean -i
命令,您将收到提示,允许您从以下选项中选择删除未跟踪的更改。
-
clean
:删除选定的文件 -
filter
:指定要清理的文件的模式 -
select
:按编号选择单个文件 -
quit
:退出而不刪除任何內容
git clean -i 互動模式。圖片由作者提供。
安全起見的模擬執行
使用 git clean -n
選項是一個有用的安全措施,因為它執行一個”模擬執行”,顯示將被刪除的未追蹤文件和目錄清單,而不會實際刪除它們。這使您可以在執行之前檢查更改。
在下面的示例中,git clean -n
命令列出應該刪除的文件,但不刪除它們。
git clean -n 用於模擬執行。圖片由作者提供。
結合 git reset
要完全重置 Git 工作目錄,您可以結合使用 git reset 和 git clean,其中:
-
git reset --hard
:將跟蹤文件重置為最後提交的狀態,丟棄任何本地更改。 -
git clean -fd
:刪除未追蹤的文件和目錄,僅留下已提交的文件。
這組合確保完全乾淨的工作目錄,當切換分支、撤銷實驗性更改或準備進行全新開始時很有用。
查看或參考 Git Pull Force: How to Overwrite a Local Branch With Remote 教程,學習覆蓋本地更改的最佳實踐。
使用 git clean 的逐步指南
按照以下步驟安全地清理您的 Git 存儲庫並刪除不需要的未追蹤文件和目錄。
步驟 1:檢查當前狀態
在清理之前,運行 git status
檢查存儲庫的當前狀態,看看哪些文件是未追蹤的。
git status
運行 git status 檢查存儲庫的當前狀態。圖片由作者提供。
步驟 2:預覽將要刪除的內容
在執行任何刪除命令之前,使用 git clean -n
預覽將要刪除的內容。
git clean -n
運行 git clean -n 預覽即將刪除的項目。圖片由作者提供。
步驟 3:刪除未追蹤的文件
如果預覽結果正確,運行 git clean -f
刪除未追蹤的文件。
git clean -f
使用 git clean -f 刪除未追蹤的更改。圖片由作者提供。
步驟 4:刪除未追蹤的目錄
使用 git clean -fd
刪除未追蹤的目錄。
git clean -fd
使用 git clean -fd 移除未追蹤的目錄。圖源:作者。
步驟 5:移除被忽略的檔案
要移除未追蹤和被忽略的檔案,使用 git clean -fx
命令。
git clean -fx
步驟 6:使用互動模式進行選擇性清理
為了獲得更多控制,考慮使用 git clean -i
進行互動式移除。此模式允許您逐個選擇要刪除的檔案。
Git clean -i
git clean -i 互動模式進行選擇性清理。圖源:作者。
git clean 與其他 Git 命令的比較
git clean
命令常與其他修改或重置檔案的 Git 命令進行比較。下表突顯了主要差異:
Command | Function |
---|---|
git clean |
永久移除未追蹤的檔案和目錄。 |
git reset |
將追蹤的檔案重置為先前狀態,影響暫存和已提交的變更。 |
git checkout (或 git restore ) |
放棄追蹤檔案中的變更,但不會移除它們。 |
git stash |
暫時保存追蹤和未追蹤的變更,以便日後使用。 |
Git Clean 最佳實踐
要安全有效地使用git clean
,請遵循以下最佳做法:
-
在刪除之前使用乾跑(-n):始終使用
git clean -n
選項執行乾跑,然後再執行git clean
。這可讓您預覽將被刪除的文件,而不會實際刪除它們。 -
請注意被忽略的文件:在使用
git clean
時,要小心使用-x
選項,這會刪除被忽略的文件。這可能會刪除.gitignore
中列出的重要配置文件。如果需要刪除被忽略的文件,請使用git clean -fx
命令。 -
與 Git Reset 結合進行完整清理: 要完全重設您的存儲庫,請將
git reset
與git clean
結合在一起,其中git reset --hard
會將已追蹤的文件還原到它們的最後提交狀態,而git clean -fd
會刪除未追蹤的文件和目錄。 -
使用互動模式(-i)進行更安全的刪除:不要盲目刪除文件,請使用互動模式(
git clean -i
)來查看並選擇要刪除的文件。
潛在風險和預防措施
如果不小心使用git clean
,可能會帶來風險,因為它會永久刪除文件而不存儲它們。以下是一些需要考慮的關鍵風險和預防措施:
-
檔案被永久刪除:與暫時保存更改的
git stash
不同,git clean
會永久刪除未被追蹤的檔案和目錄。一旦刪除,這些檔案將無法通過 Git 恢復。如果您稍後可能需要這些檔案,請在運行git clean
命令之前考慮將其存儲或備份。 -
謹慎使用 -x 選項:使用
git clean-fx
會刪除被忽略的檔案,這些檔案可能包括列在.gitignore
中的重要配置檔案或像node_modules/
和venv/
這樣的依賴快取。意外刪除這些檔案可能會破壞構建或開發環境,因此只有在必要時才使用這個選項。 -
先運行試跑:在執行
git clean -f
前,請始終使用git clean -n
進行試跑。這個步驟讓您可以預覽將被刪除的檔案,幫助您避免意外刪除重要檔案 -
替代方法:在某些情況下,使用
git stash
可能比git clean
更好。git stash -u
命令會儲存未追蹤的檔案,排除被忽略的檔案以便稍後恢復,而git stash pop
則在需要時恢復已儲存的更改。這種方法在您需要切換分支或整理工作區時很有用,而不會永久遺失更改。
結論
一個維護良好的程式庫展現了對細節、效率和負責任地管理數位資產的重視。雇主們尋找了解最佳實踐的開發人員,如在刪除文件之前使用git clean -n
,謹慎處理被忽略的文件使用-x
,並使用更安全的替代方案如git stash
。
參加DataCamp課程不僅是學習的好方法,也是向雇主表明你認真對待軟體開發的好方法。因此,我建議閱讀所有級別的前20個Git面試問題和答案部落格文章,並參加我們的新Git基礎知識技能課程,成為Git專家。