在使用Git時,您是否遇到過任何錯誤或提交問題?也許保存了一些錯誤的秘密或敏感數據。幸運的是,您可以使用Git處理文件,從提交中刪除並修復歷史記錄。
如果您進行了多次提交或克隆了具有已存在的提交歷史記錄的存儲庫,通常希望查看並了解所有的提交。在本教程中,您將學習如何從Git歷史記錄中刪除一個項目。
繼續閱讀,並使用Git拯救一天!
先決條件
本教程包含逐步指示。如果您想跟隨操作,請確保滿足以下條件:
- A local machine to test the Git commands – This tutorial uses Windows 10, but later versions will also work.
- Git Bash – 本教程使用Git Bash 2.36版本。
從Git提交中刪除文件
當您作為團隊使用Git時,每天可能會進行數百次提交。因此,很有可能需要撤消特定的提交,例如由於文件錯誤或多個文件。這種需求通常由於代碼或配置的更改而引起並成為一個問題。
為解決這個問題,您需要運行Git命令來從Git提交中刪除文件或多個文件。您將使用一個流行的工具來從Git提交中刪除單個文件,即Git Bash工具。
1. 在您的 Windows 機器上打開 Git Bash 工具。
2. 接下來,執行以下命令來創建存儲庫文件夾並切換到該文件夾。這些命令不會在終端上提供輸出。但請確保將 ~/Desktop/Repository/repo1 替換為您喜歡的文件夾路徑和名稱。
3. 執行以下命令來初始化您的存儲庫並創建兩個名為 test1.txt 和 test2.txt 的文本文件。

4. 現在,執行以下命令來檢查 Git 提交的狀態。
執行命令後,您會注意到提交是未跟踪的,還沒有提交,如下所示。

5. 執行以下 git add 命令來將您在步驟三中創建的兩個文本文件(test_file1.txt 和 test_file2.txt)添加到您的本地存儲庫中。
此命令不提供輸出,但會將文件添加到本地存儲庫中而不將其推送到遠程存儲庫。
6. 接下來,執行以下 git commit 命令,以便 Git 記錄您在本地存儲庫中所做的進度和更改。

7. 提交後,運行以下命令從 Git 提交中刪除特定文件(test_file2.txt)。

8. 最後,重新運行下面的 git status 命令來驗證儲存庫的狀態。
如下所示,該文件已從暫存區(Git 提交)中刪除,並在未跟踪文件中顯示該文件(test_file2.txt)。

刪除最近提交的所有文件
您剛剛學會了從 Git 提交中刪除特定文件。但通常情況下,您需要刪除多個文件,Git 可以通過 git reset 命令來完成此任務。git reset 命令是一個複雜但同時也非常靈活的用於撤銷儲存庫中的更改的工具。
要了解 git reset 的工作原理,您將提交幾個文件,然後重置更改以刪除存儲在 Git 提交中的最近提交的文件:
1. 在 ~/桌面/儲存庫/repo1 文件夾中創建兩個名為 test_file3.txt 和 test_file4.txt 的新文本文件。
2. 接下來,運行下面的 git add 命令,該命令不會提供輸出,但會將新文本文件添加到您的本地儲存庫(~/桌面/儲存庫/repo1)。
3. 運行下面的 git commit 命令來提交文件,以便 Git 跟踪您在儲存庫中所做的進度和更改。

4. 現在,執行以下命令來驗證本地儲存庫的狀態。
如下所示,輸出顯示沒有要提交的內容,表示儲存庫中的一切都正常。

5. 接下來,執行以下 git reset 命令來恢復在第三步中最近所做的提交。這個命令不會提供輸出,但會刪除文件 test_file3.txt 和 test_file4.txt。
你也可以使用 git reset –soft HEAD^ 來刪除到目前為止提交的所有文件。
6. 接下來,重新執行以下 git status 命令來驗證儲存庫的狀態。
下面的輸出顯示需要提交的文件 test_file3.txt 和 test_file4.txt。這個輸出表示這些文件需要從 Git 提交中刪除。

從 Git 歷史中刪除特定的提交
如果你希望從一個乾淨的起點開始,刪除所有已提交的文件就像魔法一樣。但是如果你只需要刪除特定的提交呢?只要你知道提交的 ID,git revert 命令就能派上用場。
在“刪除所有最近提交的文件”一節的最後一步中,你注意到提交並沒有被提交,而是被更改了。現在,你將提交這些更改,以查看 git revert
命令的效果。
執行以下 git commit
命令,將最近的更改提交到你的本地儲存庫中。
執行命令後,你會注意到兩個文本文件再次被提交,提交ID是 0315b85,如下所示。

現在,執行下面的 git revert
命令來撤銷你在上一步驟中進行的提交。請確保將 0315b85
替換為你的提交ID。
下面,你可以看到你最近提交的兩個文件已被刪除。

從 Git 提交歷史中刪除目錄
到目前為止,你已經知道如何刪除已提交的文件,但是如何刪除目錄呢?從 Git 提交中刪除目錄與刪除文件類似。
1. 執行以下命令,不提供輸出但執行以下操作:
- 在你的本地儲存庫中(~/Desktop/Repository/repo1)創建一個名為
myfolder
的文件夾。
- 在 ~/Desktop/Repository/repo1/myfolder 文件夾中創建一個名為 l.txt 的文件。
2. 接下來,執行以下 git 命令將新文件夾(~/Desktop/Repository/repo1/myfolder)添加到你的本地儲存庫中。

3. 執行以下 git rm 命令來刪除你在第二步中提交的文件夾(myfolder)。

4. 最後,執行 git status 命令來驗證儲存庫的狀態,並查看文件夾是否已被刪除。
下面,你可以看到整個文件夾(myfolder)已成功刪除,以及其中的 l.txt 文件。

結論
在這個教程中,你已經學會了如何處理 Git 提交,比如刪除特定的提交、文件或多個文件。你也接觸到了刪除本地存儲庫中整個文件夾並提交更改的方法。
到目前為止,你可以自信地提交存儲庫的更改,並刪除你認為不必要的提交,而不會搞亂事情。
根據你在本教程中所學到的知識,你認為哪種方法對於團隊處理提交會更加出色呢?
Source:
https://adamtheautomator.com/git-and-remove-from-commit/