JavaScript勉強会

JavaScriptの学習日記

Gitで更新履歴を作成する(コミット)

今日は、バージョン管理システムのGitを練習してみます。

Gitでコミット(更新履歴の作成)のやり方を学んでみます。

教科書は「わかばちゃんと学ぶ Git使い方入門」という本です。

 

jsstudy.hatenablog.com

 

 

SECTION 05 コミットしてみよう

(p.61)

変更を記録するための基本の流れは次の通りです。

  1. 作業する。
  2. ステージする(撮影台に載せる)。
  3. コミットする(スナップショットを撮る)。

 

SECTION 05の内容は、Web版でも閲覧できます。

 

codeiq.jp

 

Gitの3段階の状態

Gitは、データの状態を3段階で管理してました。

  1. フォルダ:   記録する対象を作る段階(修正中)
  2. ステージ:   記録する対象を指定する段階(記録前)
  3. リポジトリー: 記録した履歴を表示する段階(記録後)

 

Gitで変更を記録するには、この(1)→(2)→(3)の順番で進めます。

 

(参考)Git - Gitの基本 三つの状態

f:id:jsstudy:20171015215630p:plain

 

この図だけではいまいちピンと来ませんが、「わかばちゃんと学ぶ Git使い方入門」の説明で腑に落ちました。

 

(参考)マンガでわかるGit 第4話「コミットしてみよう」|CodeIQ MAGAZINE

f:id:jsstudy:20171015215932j:plain

 

変更を記録する流れを、写真の撮影の例えで説明されています。

(この比喩が、とても分かりやすかったです!)

 

なぜ3段階に分かれているのか?

2番目の「2.ステージする」というステップを飛ばして、いきなり撮影=記録しても良いような気がしますが、このステップは変化を管理する上で大事な働きがあります。

 

(事例)

変更したファイルが「a.txt」「b.txt」「c.txt」と3個あった場合、「a.txt」の1個だけ記録の対象に選んで、残り2個の「b.txt」と「c.txt」はまだ記録したくない場合を考えます。

 

「2.ステージする」(被写体を選んで撮影台に乗せる)というステップがあると、「a.txt」だけステージに移動させて、「b.txt」「c.txt」は作業中の欄に残せます。

 

もしも、「2.ステージする」というステップがなければ、作業中の「a.txt」「b.txt」「c.txt」全部まるごとコミットすることになります。

=コミットする対象を選べないと不便ですね!><

 

Gitに「2.ステージする」がなければ、まだ記録したくないデータも全部記録の対象になってしまい、これでは履歴がゴチャゴチャになって、どこが変わっているのか?分かりづらくなるでしょう。

 

(1)(2)(3)それぞれのステップの役割を考えると、Gitはうまく出来ていると感心しました!(素晴らしいw)

 

以下のメモは、わかばちゃんの比喩で進めてみます。

 

コミットとは?

「コミット」(commit)は、英語で「約束する」「表明する」などの意味があります。

 

https://eow.alc.co.jp/search?q=commit

3. ~に責任を持つ、~と約束する、~を誓う、~を明言[表明]する

 

https://teratail.com/questions/25297

コンピューターの用語だと「コミット」は、「確定する」というような意味で使われているようです。

 

Gitの場合は、上記の(2)から(3)の段階へ移行することを「コミットする」といいます。

 

Gitでコミットの練習

ファイルを作成/変更して、Gitで更新履歴を記録してみましょう。

 

1.作業する

前回作った「sample」フォルダ(Cドライブのsampleフォルダ)の中に、「okonomi.txt」というファイルを新規作成します。

 

f:id:jsstudy:20171015221610p:plain

 

「okonomi.txt」の中に「お好み焼き粉・水・卵を入れます」と入力して保存します。

 

すると、Sourcetreeがsampleフォルダ内の更新を察知して、Sourcetreeの表示が自動的に変わりました。(自動ってのがイイね!ちょっと感動w)

f:id:jsstudy:20171015222221p:plain

(上記のような画面になってない場合は、「ログ」というタブをクリックします。)

 

2.ステージする

「全てインデックスに追加」ボタンをクリックします。

すると、「作業ツリーのファイル」欄にあった「okonomi.txt」が1、つ上の「Indexにステージしたファイル」欄に移動しました。

f:id:jsstudy:20171015222958p:plain

 

3.コミットする

左上の「コミット」ボタンをクリックします。

すると、「ファイルステータス」タブが表示されるので、更新内容のメモを書き込みます。

f:id:jsstudy:20171015223705p:plain

最後に、右下の「コミット」ボタンをクリックします。

 

ちゃんとコミットされたか確認するために「ログ」タブをクリックします。

f:id:jsstudy:20171015224227p:plain

上記のようになってたら、コミットは成功です!

(わ~い、パチパチパチw)

 

更新履歴の追加

さらに変更を続けて、更新履歴を増やしてみます。

ファイルの内容を変更して、「1.作業する → 2.ステージする → 3.コミットする」という一連の作業を繰り返します。

 

「okonomi.txt」に具のデータを追加して、その都度コミットしてみます。

  • 「キャベツを入れます」の1行を追加して、コミット。
  • 「もやしを入れます」の1行を追加して、コミット。
  • 「豚肉を入れます」の1行を追加して、コミット。

 

(参考)お好み焼きのレシピは、クックパッドを参考にしてみましたw

みんなの推薦 お好み焼き レシピ 248品 【クックパッド】

 

1行ずつ追加してコミットを繰り返したら、以下のようになりました。

f:id:jsstudy:20171015225819p:plain

 

これで更新履歴を、たくさん作ることができました!

 

Sourcetreeの画面の特徴

  • (1)(2)(3)の3段階を進めると、画面の下から上へ徐々に記録対象が移動していくかんじ?
  • 更新履歴のグラフは、下側が古い状態で、上側が新しい状態の順番で並んでいる。

 

まとめ

  • Gitでは、ローカルPC上にあるデータの変更を3段階で管理している。
  • 3段階を写真の撮影に例えると、
    1. 作業する =被写体を用意する
    2. ステージする =撮影台の上に乗せる
    3. コミットする =カメラで撮影する
    というステップに似てる。
  • 作業の切りが良いところで、その都度コミットして、作業の結果を保存(記録)していく。
  • コミットするときは、作業内容のメモを書く。
  • コミットを繰り返すと、更新履歴が伸びていく。

 

今回は、Gitでコミットする(更新履歴を作る)方法を練習しました。

次回は、更新履歴から、過去の状態に戻る方法を練習してみます。

 

 

わかばちゃんと学ぶ Git使い方入門〈GitHub、Bitbucket、SourceTree〉

わかばちゃんと学ぶ Git使い方入門〈GitHub、Bitbucket、SourceTree〉