WEBVTT
00:00:00.206 --> 00:00:04.306
Git reset はレポジトリの履歴を
形成できるコマンドです
00:00:04.306 --> 00:00:07.945
変更を取り消したり
コミットを修正したりするなら
00:00:07.945 --> 00:00:09.401
このコマンドを使いましょう
00:00:09.651 --> 00:00:11.241
♪ (ボッサの音楽) ♪
00:00:14.691 --> 00:00:17.130
Git and GitHub Foundationsによる
00:00:17.130 --> 00:00:18.669
reset コマンドの
エピソードにようこそ
00:00:18.669 --> 00:00:21.510
このコマンドには多くの機能があり
様々なモードがあります
00:00:21.510 --> 00:00:25.002
ここでご紹介するのは3つのモードです
00:00:25.002 --> 00:00:28.236
これらは
soft ; mixedまたは標準設定; そしてhard です
00:00:28.555 --> 00:00:30.587
♪ (音楽) ♪
00:00:31.162 --> 00:00:33.101
これらの名称は機能を説明しています
00:00:33.101 --> 00:00:35.513
まずは標準設定のmixedから
始めましょう
00:00:35.830 --> 00:00:39.648
これは履歴だけでなく
作業中のディレクトリも変更します
00:00:39.918 --> 00:00:41.708
だからミックス―
両方だというわけです
00:00:41.898 --> 00:00:44.427
softは1つか複数のコミットの変更を
00:00:44.427 --> 00:00:47.179
ステージングエリアに戻します
00:00:47.179 --> 00:00:50.048
それをもとに新しいコミットの作成を
継続できます
00:00:50.433 --> 00:00:53.039
一方Hard は破壊的な作業です
00:00:53.039 --> 00:00:55.992
つまり保存しておきたくないものを
消すための作業です
00:00:55.992 --> 00:00:59.112
これら3つを念頭に置いて
00:00:59.112 --> 00:01:00.710
まずはmixed から見ていきましょう
00:01:03.475 --> 00:01:05.173
Mixed はGitを使い始めたユーザーに
00:01:05.173 --> 00:01:07.241
度々推奨されるもので
00:01:07.241 --> 00:01:09.419
なぜならstatus コマンドの中に
表示されるからです
00:01:09.419 --> 00:01:11.341
ステージングエリアに変更があり
00:01:11.341 --> 00:01:14.103
git status を見ると
git reset HEADがあります
00:01:14.103 --> 00:01:16.926
これによってこれらの変更を
ステージングエリアに持ち込み
00:01:16.926 --> 00:01:19.015
mixed オプションで
作業中のディレクトリに
00:01:19.015 --> 00:01:20.201
戻すことができます
00:01:20.672 --> 00:01:23.379
Soft というのは
細かすぎる変更を
00:01:23.379 --> 00:01:25.706
扱うときに使うものです
00:01:26.033 --> 00:01:27.869
1 2 3 4 5つのコミットが
00:01:27.869 --> 00:01:30.846
すべて1つのトランザクションで
あることに気付いたので
00:01:30.846 --> 00:01:32.434
すべてまとめることにします
00:01:32.434 --> 00:01:36.542
git reset -- soft HEAD~5 を使って
00:01:36.542 --> 00:01:38.310
最近の5つのコミットをまとめましょう
00:01:38.615 --> 00:01:40.920
soft を使ったこのコマンドで
00:01:40.920 --> 00:01:42.706
5つのコミットをすべて―
00:01:42.706 --> 00:01:46.285
1つのコミットとして
ステージングエリアにまとめられます
00:01:46.665 --> 00:01:48.765
履歴の修正にはとても役立ちますが
00:01:48.765 --> 00:01:51.465
履歴の修正には価値を付与しないコミットを
00:01:51.465 --> 00:01:54.407
破棄するという極端な場合もあります
00:01:54.407 --> 00:01:57.748
送信・発信したり 他の人と共有したくない場合です
00:01:57.752 --> 00:01:59.411
ここでhard が役に立ちます
00:01:59.411 --> 00:02:01.983
一部の作業を完全に削除したい場合
00:02:01.983 --> 00:02:04.900
変更を試みたけれど
うまくいかなかった場合などは
00:02:04.900 --> 00:02:08.331
git reset -- hard を使って
完全にこれらのコミットを削除できます
00:02:08.606 --> 00:02:11.268
ではどうしてコミットを
作るのかと尋ねるかもしれません
00:02:11.268 --> 00:02:13.971
reflog コマンドは
今後のエピソードでご紹介しますが
00:02:13.971 --> 00:02:17.078
reflog コマンドはとてもいい
セーフティーネットを提供するので
00:02:17.078 --> 00:02:20.108
コミットでチェックポイントを
作る気にさせるでしょう
00:02:20.108 --> 00:02:22.353
hard が使えることを
知っていることで
00:02:22.353 --> 00:02:24.560
履歴をいつでも整理できますね
00:02:25.470 --> 00:02:27.084
♪ (音楽) ♪
00:02:27.760 --> 00:02:32.178
reset と一緒に語られることの多い
親戚のようなコマンドがあります
00:02:32.178 --> 00:02:34.152
checkout というコマンドです
00:02:34.152 --> 00:02:37.702
checkout コマンドはreset とは
少し精度が異なり
00:02:37.702 --> 00:02:41.266
たいていレポジトリの履歴全体を
操作するものです
00:02:41.703 --> 00:02:45.395
Checkout はディレクトリや
ファイルレベルの操作に特化しています
00:02:45.756 --> 00:02:48.947
コミット全体を取り消したり
変更するのではなく
00:02:48.947 --> 00:02:52.710
履歴でコミットの
特定のファイルに戻ることができ
00:02:52.710 --> 00:02:57.297
そのファイルとバージョンを
現在作業中のディレクトリに戻します
00:02:57.685 --> 00:03:01.234
Gitレポジトリの履歴が目指すところは
明瞭なコミュニケーションです
00:03:01.487 --> 00:03:05.662
ですからgit reset hard でも
reset soft でも reset mixed でも
00:03:05.662 --> 00:03:08.145
より正確なcheckout コマンドでも
00:03:08.145 --> 00:03:12.757
あなたの変更の明確な意図が
同僚に伝わるように使ってください
00:03:12.954 --> 00:03:15.976
Git reset は新しいGitユーザーには
少し使うのが怖いツールのように
00:03:15.976 --> 00:03:17.235
思えるかもしれません
00:03:17.434 --> 00:03:20.184
でも 美しいレポジトリの履歴を
作るために
00:03:20.184 --> 00:03:22.473
とても役立つツールにもなります
00:03:24.371 --> 00:03:28.029
Git and GitHub Foundationsのreset 編を
ご覧いただきありがとうございます
00:03:28.029 --> 00:03:31.687
いつも通り 横にあるチャンネルを
購読するのをお忘れなく
00:03:31.687 --> 00:03:33.811
質問やコメントは下にどうぞ
00:03:33.811 --> 00:03:36.401
GitやGitHubに関する
ためになるトピックも
00:03:36.401 --> 00:03:38.523
下でチェックしてくださいね
00:03:38.789 --> 00:03:41.528
♪ (音楽) ♪
(音声が静かになる)