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