章節 15 復原暫存區的修改(在送交之前)

學習目標

編輯檔案並加入追蹤 01

修改 hello.rb 加入註解

檔案: hello.rb

# This is an unwanted but staged comment
name = ARGV.first || "World"

puts "Hello, #{name}!"

接著將它加入追蹤。

執行:

git add hello.rb

檢視狀態 02

檢視狀態現在在暫存區的是您不想送交的內容

執行:

git status

輸出:

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#	modified:   hello.rb
#

現在 git status 顯示這些異動已經加入暫存區了而且準備可以送交。

重設暫存區(Staging Area) 03

幸虧狀態顯示告知我們如何重設暫存區(把追蹤的檔案從暫存區移除)。

執行:

git reset HEAD hello.rb

輸出:

$ git reset HEAD hello.rb
Unstaged changes after reset:
M	hello.rb

git reset 指令重新設定了暫存區或者說清除了 staging area,就是把 Staging Area 設定成跟 HEAD版本檔案內容一致。

reset 命令預設的情況下並不會改變工作目錄。所以工作目錄裡依然保留了你剛剛實驗的註解。 我們可以再利用 checkout 還原工作目錄到當下的版本。

總結一下就是 reset 針對 Staging Area 而 checkout 針對工作目錄,兩者都是使當下狀態跟檔案庫 HEAD 一致。

簽出上一次送交的版本 04

執行:

git checkout hello.rb
git status

輸出:

$ git status
# On branch master
nothing to commit (working directory clean)

工作目錄狀態又再一次變得單純(沒有任何變動,跟檔案庫一致)。

目錄