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に関する
ためになるトピックも
下でチェックしてくださいね
♪ (音楽) ♪
(音声が静かになる)