本文へスキップ
BecomeCoder

Gitコース · 第2章 ブランチとマージ · レッスン14

取り消しの基本 ― restore と reset

ブラウザで完結

導入

Git を安心して使えるのは「取り消せる」からです。ただし取り消しには段階があります。「まだステージだけ」「作業ツリーの編集ごと」「コミットまで」。それぞれに対応するコマンドを整理します。

説明

ステージから降ろす(コミット候補から外す) には git restore --staged

git init
git add .
git status
git restore --staged README.md
git status

README.md が「コミット予定」から「Untracked / 未ステージ」に戻ります。ファイルの中身はそのままです。

作業ツリーの編集を捨てて、直前のコミットの状態に戻す には git restore--staged なし)。

git commit -m "Initial commit"
echo "余計な変更" >> README.md
git restore README.md
cat README.md

書き足した行が消え、コミット時点に戻ります。

コミットごと巻き戻す には git reset。戻し方は3種類あります。

モード履歴(HEAD)ステージ作業ツリー
--soft戻すそのままそのまま
--mixed(既定)戻す戻すそのまま
--hard戻す戻す戻す(編集も消える)
echo "2つ目" >> app.js
git add .
git commit -m "second"
git reset --soft HEAD~1
git status

HEAD~1 は「1つ前のコミット」。--soft なので直前コミットが取り消され、その変更は ステージに載ったまま 残ります。--hard は作業中の変更まで消えるので、使うときは慎重に。

やってみよう

git addgit restore --staged でステージから降ろせること、git restore で編集を捨てられることを確認しましょう。最後に git reset --soft HEAD~1 でコミットだけ取り消せることも試してみてください。

演習

ステージ済みの README.md を、中身を保ったままステージから降ろしてください。

ヒント1を見る

ステージから降ろすのは git restore --staged <ファイル>

実際に動かしてみよう

下の端末に git コマンドを打って Enter を押すと、その場で結果が返ります。本文の手順を実際になぞりながら進めましょう(各レッスンは毎回まっさらな状態から始まり、「最初からやり直す」でいつでも戻せます)。

Git(シミュレート)

ブラウザ内でGitコマンドを試せる学習用環境を読み込みます(本物のgitではなく、動きを再現したものです)。
スクロールして表示された時点でも自動で読み込まれます。