restoreは「上書き」である

ステージにある版で、丸ごと上書きする
ステージにある版で、丸ごと上書きする

git restoreは変更を「取り消す」と説明されますが、正確にはステージ(index)の内容でワーキングツリーのファイルを上書きする動作です。addしていなければ、ステージの内容は最後のコミットと同じです。Ctrl+Zのように「1つ前の操作に戻る」のではなく、ステージにある版で丸ごと置き換えます。

つまり、restore前のファイル内容は完全に失われます。10行の修正も、100行の修正も、一瞬で消える。restoreが「不可逆な操作」と言われるのは、このためです。もし今の変更を残しておきたいなら、restoreする前にgit stashで一時退避する方法があります。

不可逆と聞くと怖く感じるかもしれませんが、裏を返せば「コミットさえしておけば、どんな編集ミスからも一瞬で復帰できる」ということ。こまめにコミットする習慣が、最強のセーフティネットになります。

壊す前にコミット。壊したらrestore。このリズムが身につけば、もうファイルの編集を怖がる必要はありません。