章節 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)
工作目錄狀態又再一次變得單純(沒有任何變動,跟檔案庫一致)。