Git reset はレポジトリの履歴を 形成できるコマンドです 変更を取り消したり コミットを修正したりするなら このコマンドを使いましょう ♪ (ボッサの音楽) ♪ Git and GitHub Foundationsによる reset コマンドの エピソードにようこそ このコマンドには多くの機能があり 様々なモードがあります ここでご紹介するのは3つのモードです これらは soft ; mixedまたは標準設定; そしてhard です ♪ (音楽) ♪ これらの名称が機能を説明しています まずは標準設定のmixedから 始めましょう これは履歴だけでなく 作業中のディレクトリも変更します だからミックス― 両方だというわけです softは1つか複数のコミットの変更を ステージングエリアに戻すので それをもとに新しいコミットの作成を 継続できます 一方Hard は破壊的な作業です つまり保存しておきたくないものを 消すための作業です これら3つを念頭に置いて まずはmixed から見ていきましょう Mixed はGitを使い始めたユーザーに 度々推奨されるもので なぜならstatus コマンドの中に 表示されるからです ステージングエリアに変更があり git status を見ると git reset HEADがあります これによってこれらの変更を ステージングエリアに持ち込み mixed オプションで 作業中のディレクトリに 戻すことができます Soft というのは 細かすぎる変更を 扱うときに使うものです 1 2 3 4 5つのコミットが すべて1つのトランザクションで あることに気付いたので すべてまとめることにします git reset -- soft HEAD~5 を使って 最近の5つのコミットをまとめましょう soft を使ったこのコマンドで 5つのコミットをすべて― 1つのコミットとして ステージングエリアにまとめられます 履歴の修正にはとても役立ちますが 履歴の修正には価値を付与しないコミットを 破棄するという極端な場合もあります 送信・発信したり 他の人と共有したくない場合です ここでhard が役に立ちます 一部の作業を完全に削除したい場合 変更を試みたけれど うまくいかなかった場合などは git reset -- hard を使って 完全にこれらのコミットを削除できます ではどうしてコミットを 作るのかと尋ねるかもしれません Gitは reflog コマンドで とてもいいセーフティーネットを 提供しており これについては 今後のエピソードでご紹介します コミットでチェックポイントを 作ることを勧めるものです hard が使えることを 知っていることで 履歴をいつでも整理できますね ♪ (音楽) ♪ reset と一緒に語られることの多い 親戚のようなコマンドがあります checkout というコマンドです checkout コマンドはreset とは 少し精度が異なり たいていレポジトリの履歴全体を 操作するものです Checkout はディレクトリや ファイルレベルの操作に特化しています コミット全体を取り消したり 変更するのではなく 履歴でコミットの 特定のファイルに戻ることができ そのファイルとバージョンを 現在作業中のディレクトリに戻します Gitレポジトリの履歴が目指すところは 明瞭なコミュニケーションです ですからgit reset hard でも reset soft でも reset mixed でも より正確なcheckout コマンドでも あなたの変更の明確な意図が 同僚に伝わるように使ってください Git reset は新しいGitユーザーには 少し使うのが怖いツールのように 思えるかもしれません でも 美しいレポジトリの履歴を 作るために とても役立つツールにもなります Git and GitHub Foundationsのreset 編を ご覧いただきありがとうございます いつも通り 横にあるチャンネルを 購読するのをお忘れなく 質問やコメントは下にどうぞ GitやGitHubに関する ためになるトピックも 下でチェックしてくださいね ♪ (音楽) ♪ (音声が静かになる)