ブランチをリセットする
CoddyのTerminalジャーニー「バージョン管理」セクションの一部 — レッスン 44/58。
git reset は、現在のブランチポインタを別のコミットに移動させます。最も一般的な使い方は、まだ共有していない最近のコミットを取り消すことです。
git reset --hard HEAD~1これにより、main が1つ前のコミットに戻り、それに合わせてワーキングディレクトリが上書きされます。スキップしたコミットは、ブランチから到達できなくなります(気が変わったときのために Git はしばらく保持しますが、いずれ消えるものと考えてください)。
リセットには3つの種類があります:
--soft: ブランチポインタを移動します。ステージングされた変更は保持されます--mixed(デフォルト): ポインタを移動します。ステージングを解除しますが、ワーキングディレクトリのファイルは保持されます--hard: ポインタを移動します。ワーキングディレクトリのファイルの変更もすべて破棄します
--hard は最も破壊的な形式です。ローカルでのミスをクリーンアップするのに最適ですが、他の人がすでにプルしたコミットに対しては決して使用しないでください。
チャレンジ
中級フォルダには doc.md が含まれています。リポジトリを初期化し、順番に3つのコミットを作成してください:
- メッセージ
Add docでdoc.mdを追加します。 doc.mdにsecondを追記し、メッセージSecond draftでコミットします。doc.mdにthirdを追記し、メッセージThird draftでコミットします。
HEAD~2 を使用して、ブランチを最初のコミットまでハードリセットしてください。doc.md の内容を表示してください。
チートシート
git reset は、現在のブランチポインタを別のコミットに移動させます。3つの種類があります:
--soft: ポインタを移動し、ステージングされた変更を保持します--mixed(デフォルト): ポインタを移動し、ステージングを解除しますが、ワーキングディレクトリのファイルは保持します--hard: ポインタを移動し、ワーキングディレクトリの変更を破棄します
git reset --hard HEAD~1 # 最後のコミットを取り消し、変更を破棄する
git reset --hard HEAD~2 # 最後の2つのコミットを取り消す警告: 他の人がすでにプルしたコミットに対して --hard を使用しないでください。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。