Git - 修復錯誤:初學者指南,學習糾正常見錯誤

你好啊,未來的 Git 大師們!作為你們友好的鄰居計算機科學老師,我將指導你們穿越 Git 版本控制的複雜世界。今天,我們將探討如何在 Git 中修復錯誤。如果你從未使用過 Git,也不用擔心——我們會從最基礎的知識開始,逐步學習。在這個教學結束時,你將能夠像專業人士一樣撤消更改!

Git - Fix Mistakes

了解 Git 的基礎

在我們深入修復錯誤之前,讓我們快速複習一下 Git 是什麼,以及它為什麼如此重要。Git 是一個版本控制系統,它幫助開發者跟蹤他們代碼隨著時間的變化。把它想像成是你專案的時間機器——你可以回到專案歷史中的任何時刻!

現在,讓我們開始我們的主要話題:在 Git 中修復錯誤。

撤銷未提交的更改

什麼是未提交的更改?

未提交的更改是指你對文件進行的修改,但還沒有保存(或“提交”)到 Git 的歷史記錄中。這些就像是你仍在工作的草稿。

如何撤銷未提交的更改

假設你對一個文件進行了一些更改,但後來你發現這些更改不是你想要的。下面是如何撤消它們的方法:

git checkout -- filename

例如,如果你對名為 mycode.py 的文件進行了不需要的更改,你會輸入:

git checkout -- mycode.py

這個命令告訴 Git 拋棄 mycode.py 中的更改,並將其恢復到上次提交的版本。

撤銷所有未提交的更改

如果你想要撤銷工作目錄中所有未提交的更改,你可以使用:

git checkout -- .

句尾的點(.)表示“當前目錄中的所有文件”。

專業提示:在運行這些命令之前,請務必仔細檢查,因為它們將永久性地拋棄你的更改!

從暫存區移除更改

什麼是暫存區?

Git 的暫存區就像是一個預備區,你將準備提交的文件放在這裡。這是工作目錄和 Git 倉庫之間的一個中間步驟。

如何取消暫存更改

如果你已經將文件添加到暫存區(使用 git add),但後來決定不提交它們,你可以使用以下命令將它們從暫存區中移除:

git reset HEAD filename

例如,如果你想取消暫存 mycode.py

git reset HEAD mycode.py

這個命令將文件從暫存區移除,但保留你工作目錄中的更改。

取消暫存所有更改

要一次性取消暫存所有文件:

git reset HEAD

記住:這並不會刪除你的更改;它只是將它們從暫存區中移除。

使用 Git Reset 移動 HEAD 指針

了解 Git 中的 HEAD

在 Git 中,HEAD 是一個特殊的指針,它指向你正在工作的當前提交。這就像是你在專案歷史中的一個書籤。

柔性重置

柔性重置會將 HEAD 指針移動到特定的提交,但保留你的更改在暫存區:

git reset --soft commit_hash

例如:

git reset --soft abc123

這在你想重寫提交信息或將多個提交合並為一個時很有用。

混合重置(默認)

混合重置會移動 HEAD 指針並取消暫存更改:

git reset commit_hash

或者明確地:

git reset --mixed commit_hash

這是 git reset 的默認模式。當你想要重做暫存和提交時,這很有用。

強制重置

強制重置會移動 HEAD 指針並拋棄所有更改:

git reset --hard commit_hash

警告:這會永久性地拋棄指定提交之後的所有更改。請謹慎使用!

重置類型的總結

以下是一個方便的表格,總結了不同類型的重置:

重置類型 HEAD 暫存區 工作目錄
柔性
混合
強制

結論

恭喜你!你剛剛學會了如何在 Git 中修復一些最常見的錯誤。記住,每個人都会犯錯誤——即使是經驗豐富的開發者。關鍵在於知道如何糾正它們。

以下是我們所涵蓋的內容的快速複習:

  • 撤銷未提交的更改
  • 從暫存區移除更改
  • 使用不同類型的重置移動 HEAD 指針

在測試倉庫中練習這些命令,很快你就能像專業人士一樣糾正 Git 的錯誤。快樂編程,並記住——在 Git 的世界中,沒有不可修復的錯誤!

Credits: Image by storyset