解釋 Git 中 reset 命令的工作原理


commit 命令會隱式地移動分支的 HEAD 指標。下圖顯示,最初 HEAD 指向提交 c1。每次提交操作後,HEAD 指標都會移動到新的提交。我們可以使用 HEAD 指標或提交雜湊值執行重置。


git reset 命令將顯式或強制地將分支的 HEAD 指標移動到特定的提交。

重置 HEAD 指標時,我們有 3 個選項:

  • 軟重置 (Soft)
  • 混合重置 (Mixed)
  • 硬重置 (Hard)

硬重置

執行硬重置時,git 會將提交快照複製到工作區和暫存區。因此,在執行硬重置之前在當前工作目錄或暫存區中所做的任何更改都將丟失。使用 HEAD 指標執行硬重置的語法如下:

git reset --hard HEAD~<i>

其中,i 是要向後移動的提交次數。

例如,以下命令將 HEAD 指標向後移動 2 次提交:

git reset --hard HEAD~2

下圖顯示執行上述命令後 HEAD 指標的位置。

由於提交現在指向 c1,其他提交 c2c3 將被垃圾回收。

混合重置

這是重置的預設選項。混合重置僅將快照從儲存庫複製到暫存區。因此,工作區中的當前更改將保持不變。

使用 HEAD 指標執行硬重置的語法如下:

git reset --mixed HEAD~<i>

其中,i 是要向後移動的提交次數。

例如,以下命令將 HEAD 指標向後移動 2 次提交:

git reset --mixed HEAD~2

在我們的示例中,混合重置後 HEAD 指標的位置如下圖所示。

軟重置

當我們執行軟重置時,提交快照不會被複制到暫存區或工作區。它只會將 HEAD 顯式地移動到該提交。工作區和暫存區中的所有更改將保持不變。

使用 HEAD 指標執行硬重置的語法如下:

git reset --soft HEAD~<i>

其中,i 是要向後移動的提交次數。

例如,以下命令將 HEAD 指標向後移動 2 次提交:

git reset --soft HEAD~2

在我們的示例中,混合重置後 HEAD 指標的位置如下圖所示:

更新於:2021年4月30日

845 次檢視

開啟你的 職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.