CHAPTER 5 · 1 lesson · 13問

変更の取り消しと reset

working tree の変更破棄、stage の解除、直前 commit の修正、reset と revert による commit 取り消し。

0 / 13 問クリア

ここまでは「commit する」ことばかりやってきたね。でも、Git の本当の価値は安全に過去へ戻れることにあるよ。

戻れると分かっていれば、恐れずに新しいコードを書ける。消してみる、書き換えてみる、全部やり直してみる — どれをやっても、commit した過去の時点には必ず帰れるからだよ。

この章のコツは1つだけ。先に「どの領域の変更を取り消したいのか」を決めること。対象領域が決まれば、使うコマンドは自動的に決まるよ。

  • working tree(local の未 stage 変更)を破棄したい → git restore
  • stage(git add した変更)を下ろしたい → git restore --staged
  • 直前の commit メッセージや内容を直したい → git commit --amend
  • commit 履歴を取り消したい → git reset または git revert

いちばんの山場は、最後の2つの使い分けだよ。基準はこれだけ。

まだ remote へ push していない → reset。もう push して公開した → revert。

push したあとに過去の commit を reset で消してしまうと、他のメンバーの履歴と食い違って事故の原因になる。revert は「打ち消す commit」を新しく追加するので、誰の履歴も壊さない — それだけの違いだよ。

git reset --hard は、未 commit の変更を完全に破棄するコマンドだよ。commit していない作業内容は消えてしまうので、安全な演習環境でしっかり練習しておこう。

この章のレッスン

restore / reset / revert

  1. 05変更の取り消し(restore / reset / revert)restore・amend・reset・revert の4つのコマンドを使い、working tree・stage・repository の各領域に応じた適切な取り消し操作を身につけよう。問題へ

つぎは「stash と .gitignore」。作業中の変更を一時退避する stash と、commit 対象から除外する .gitignore の使い方。