まふゆちゃんの技術ブログ。

情報系の高校生・高専生・大学生を全力で応援するブログです。

超絶わかりやすいGit入門。(個人開発編)

f:id:Mafuyu7se:20181229224254p:plain
こんばんは!
バーチャル高専女子、まふゆです。

初心者向けGit解説記事、第2弾は「個人開発」編だよ!
今回から実践的な使い方を説明していきます。
この記事を読めば、個人開発でバージョン管理を行うために最低限必要なスキルが身につくはず!!

なお、今回の記事は準備編の通りに開発環境を構築した人向けの内容になっています。
環境構築がまだの人は、まずは準備編を読んでGitの開発環境を整えてくださいね。

www.mafuyu7se.com


■ 本記事の対象読者

準備編を読んで、Gitの環境構築が終わった!
・環境は整ったけど、Gitを使って何をすればいいのか全然分からない!
・Gitを使ったバージョン管理の基礎について知りたい!

といった人向けの内容になります。

■ 筆者の開発環境

・OS:Windows 10
・Gitクライアント:TortoiseGit

なお、TortoiseGitはWindowsにのみ対応しています。
MacやLinux使ってる人はゴメンネ…。

■ 注意!!

今回の記事は、「初心者向け」であることを前提として書いています。
そのため、初心者にとってノイズになるであろう要素は全て省いたような内容にしています。
実際の開発現場でGitを使っている人や、Gitの内部構造に詳しい人から見るとツッコミどころが多数あるかも。
あくまで「初心者向けにGitの使い方をわかりやすく伝える」ことが目的なので、そのあたりには目を瞑っていただけると助かります…。

■ 2つの「リポジトリ」について。

準備編で以下2点の作業をしてもらったよね。

・GitHubで、ソースコードの履歴を管理する場所である「リポジトリ」を作成。
・GitHub上に作成した「リポジトリ」を、「クローン」して自分のPC内にコピー。

上記作業を終えた時点で、GitHub上と自分のPCにそれぞれ「リポジトリ」が存在している状態になっています。

このとき、

・GitHub上のリポジトリを「リモートリポジトリ」
・GitHubから自分のPC内にコピーしてきたリポジトリを「ローカルリポジトリ」
・「クローン」したときにデスクトップ上に作られたフォルダを「作業フォルダ」または「作業ディレクトリ」

と呼びます。

図で表すとこんな感じ。
f:id:Mafuyu7se:20190321215450g:plain

「リモートリポジトリ」はGitHubのサーバー上に存在する、神様みたいな存在です。
こいつが全ての親みたいなもんです。
正式な変更履歴はここで管理することになります。

「ローカルリポジトリ」は自分のPC環境に「リモートリポジトリ」を複製したものです。
ユーザーは、まずこの「ローカルリポジトリ」に変更を加えていきます。
チームで開発を行う場合、メンバーはそれぞれ各自のPCに「ローカルリポジトリ」を作成して作業をすることになります。

「作業フォルダ」はその名の通り、ユーザが作業を行うフォルダです。
このフォルダ内に、バージョン管理対象のソースコードのファイルが入っています。

Gitを使った個人開発では、基本的に以下のSTEP1~3を繰り返して開発を行っていくことになります。


【STEP1】
「作業フォルダ」内のバージョン管理対象ファイルに対して変更を加える。(テキストエディタを使ったコードの編集、新しいファイルの追加など)

【STEP2】
「作業フォルダ」に対して加えた変更内容を、「ローカルリポジトリ」に履歴として記録する。

【STEP3】
「ローカルリポジトリ」に記録した変更履歴に問題がなければ、「リモートリポジトリ」にも同じ変更履歴を適用する。


「まずは自分の手元の環境(ローカルリポジトリ)で試作してから、公の場(リモートリポジトリ)に公開する」というイメージを持ってもらえれば大体OKです。

STEP2のように、作業フォルダ内の変更を「ローカルリポジトリ」へ履歴としてを記録することを「コミット(Commit)」といいます。
また、STEP3のように「ローカルリポジトリ」の変更履歴を「リモートリポジトリ」へ適用することを「プッシュ(Push)」といいます。

図で表すとこんな感じです。
f:id:Mafuyu7se:20190321220946g:plain

ちょっと覚えることが多くて大変かもしれないけど、
・リモートリポジトリ
・ローカルリポジトリ
・作業フォルダ
・コミット
・プッシュ

これら5つのワードはとっても重要です!!
しっかりイメージを掴んでね。


スポンサーリンク



■ まずはバージョン管理対象のファイルを「追加」!

それでは本格的にバージョン管理を始めていきましょう。
準備編で、リモートリポジトリからクローンした際に作られた作業フォルダを開いてください。
こいつです。

f:id:Mafuyu7se:20190314204504p:plain

現時点では、作業フォルダ内にはREADME.mdしか存在していないはず。
(隠しフォルダ表示をONにしていれば「.git」というフォルダも表示されますが、今は気にしなくていいです。)
ここに新しくバージョン管理対象のソースファイル(Hello.c)を追加しましょう。
テキストエディタは好きなものを使ってください。

f:id:Mafuyu7se:20190321225137p:plain

内容はこんな感じ。
"Hello Mafuyu!!"を出力するだけのとってもシンプルなコードです。
私はC言語が得意なのでCで書きましたが、PythonでもRubyでも何でもいいです。好きな言語で書いてください。

#include <stdio.h>

int main(void)
{
    printf("Hello Mafuyu!!\n");
    return 0;
}


なお、この記事は「Gitの使い方を教えること」が目的なので、コードをコンパイルして実行するような手順は省略します。
(本当はしっかり動作確認をして、きっちり動くものをコミット&プッシュすべきなんだけどね…)
コンパイラをインストール済みの人は動作確認してもいいよ。

さて、ソースファイルを作りましたが、実は"Hello.c"はまだバージョン管理対象になっていません。
これはとても大事なことなんですが、新しく作ったファイルをバージョン管理対象にするときは、「追加(Add)」という作業をする必要があります。

「追加」の作業はとっても簡単です。
追加対象のファイルがあるディレクトリ上の空いてるスペースを右クリック → 「TortoiseGit」 → 「追加(A)...」の順に選択してください。

f:id:Mafuyu7se:20190321231451p:plain


こんなウインドウが出ます。
現在のディレクトリ内において、バージョン管理されていないファイルが全て表示されます。
追加したいファイルにチェックを入れてOKを押しましょう。
最初から"Hello.c"にチェックが入っているので、そのままOKを押しちゃってください。

f:id:Mafuyu7se:20190321232728p:plain


青字で「成功」が表示されれば追加は完了です!簡単だね!
OKを押してウインドウを閉じましょう。

f:id:Mafuyu7se:20190321232540p:plain


新しく追加されたファイルには、こんな感じで青色のプラスのアイコンが付与されます。
(アイコンが表示されない場合、「TortoiseGit オーバーレイ 表示されない」等でググったら解決するかも。)

f:id:Mafuyu7se:20190322000338p:plain


スポンサーリンク



■ 続いて、変更を「コミット」!

先程の作業で「作業フォルダ内の"Hello.c"をバージョン管理対象に追加する」ことができました。

し か し!
この変更はまだ「ローカルリポジトリ」には記録されていません。
つまり、履歴として保存されていないわけです。
「"Hello.c"をバージョン管理対象に追加したよ!」という変更を、履歴としてローカルリポジトリに登録しなきゃいかんわけです。

それでは、作業フォルダ内の変更内容を履歴としてローカルリポジトリに記録(コミット)する方法を教えます。
まず、作業フォルダ内を右クリック → 「Git コミット(C) -> "master"...」を選択。

f:id:Mafuyu7se:20190403195902p:plain


すると、こんなウインドウが開きます。

f:id:Mafuyu7se:20190403200245p:plain


まず見てほしいのが下の青枠。
これが、今回のコミットで「ローカルリポジトリ」に記録する変更内容です。
「Hello.c」がバージョン管理対象として「追加」されていることがわかりますね。

続いて上の赤枠。
ここに「コミットメッセージ」というものを書きます。
コミットメッセージっていうのは、要するに「こんな変更を加えたよ!」っていうコメントのこと。
これを記述することで、後から履歴を確認したときに変更内容を把握しやすくなります。
今回は、「Hello.cをバージョン管理対象として追加」とでも書いときましょう。

f:id:Mafuyu7se:20190403201411p:plain


この状態で、「コミット(O)」を押しちゃってください。

f:id:Mafuyu7se:20190403201533p:plain


青字で「成功」が表示されたらコミット完了です。
これで「ローカルリポジトリ」に変更履歴として記録されました!

コミットが正しく行われたことを確認してみましょう。
作業フォルダ内を右クリック → 「TortoiseGit」 → 「ログを表示(L)」を選択してね。

f:id:Mafuyu7se:20190403202109p:plain


「ローカルリポジトリ」内のコミット履歴が表示されます。
先程のコミット内容が記録されていることが確認できたら、ウインドウを閉じましょう。

f:id:Mafuyu7se:20190403202816p:plain


これで「ローカルリポジトリへのコミット」は完了です。
作業フォルダ内に変更を加えたら、右クリックメニューから「コミット」を選択して「コミットメッセージ」を書くだけ!!
これも簡単だね!

さっきの図を使って示すと、現在の状況はこんな感じです。

f:id:Mafuyu7se:20190403203756p:plain


続いて、GitHubサーバ上の「リモートリポジトリ」に変更内容を「プッシュ」しましょう。


スポンサーリンク



■ 変更をリモートリポジトリに「プッシュ」!

さて、先程の作業であなたのPC内の「ローカルリポジトリ」に変更履歴が追加されました。

ただし!!
GitHubサーバ上の「リモートリポジトリ」にはまだ変更履歴が追加されていません
サーバ上に変更履歴が追加されていないので、先程追加した"Hello.c"を外出先のPCで見たり、編集したりすることは当然できません。

「Hello.cを追加したよ!」という変更内容は、現時点ではあなたのPC内にのみ存在していて、外部から見える状態になっていないのです。
そのため、変更内容をサーバ上の「リモートリポジトリ」に適用(プッシュ)してあげましょう。

作業フォルダ内を右クリック → 「TortoiseGit」 → 「プッシュ(H)...」の順に選択してください。

f:id:Mafuyu7se:20190403205633p:plain


よくわからないウインドウが開きます。
そのままOKを押しちゃってください。
(「ブランチ」というものはGitを使いこなす上で非常に大切な概念なんだけど、ちょっぴり難しいので今回は説明しません。気になる人は、この記事を読み終わってからググってみてね。気が向いたら私のブログで解説するかも。)

f:id:Mafuyu7se:20190403210255p:plain


これだけでプッシュが行われます。
青色の文字で「成功」が表示されたら完了。

f:id:Mafuyu7se:20190403210643p:plain


この時点で、GitHubサーバ上の「リモートリポジトリ」に変更内容を反映することができました。
GitHubにアクセスして、Hello.cが追加されていることを確認しましょう。

f:id:Mafuyu7se:20190403211100p:plain

うん、バッチリですね。完璧です。

ひとまず、Gitを使った個人開発の流れはこんな感じになります。
他にも覚えるべきことは沢山あるのですが、クローン追加コミットプッシュさえ覚えれば、最低限のバージョン管理は可能です。

「作業フォルダ内を変更」 → 「コミット」 → 「プッシュ」を繰り返して開発を進めるんだな~っていう雰囲気を掴んでもらえれば、今回はとりあえずOKです!!


スポンサーリンク



■ ちょっと復習してみましょう。

開発の流れを大体掴んでもらったところで、復習がてら1件の変更履歴の追加を実際に行ってみましょう。
作業の流れは以下の通りです。

①「Hello.c」で、文字列"Hello Mafuyu!!"を10回表示するように変更。
②ローカルリポジトリに、変更内容をコミット。
③リモートリポジトリに、変更内容をプッシュ。

Hello.cの内容はこんなもんでいいでしょう。

#include <stdio.h>

int main(void)
{
    int i;
    for(i=0; i<10; i++)
    {
        printf("Hello Mafuyu!!\n");
    }
    return 0;
}


Hello.cを上書き保存すると、以下のように赤色のビックリマークのアイコンが付きます。
これは、「ローカルリポジトリの最新の状態から変更が入ったよ!」っていうことを示しています。
なお、緑色のチェックマークのアイコンは「最新の状態から変更が入っていないよ!最新の状態のままだよ!」ってことです。
README.mdには特に変更を加えていないので、緑色のチェックマークアイコンが付いていますね。
なお、このアイコンのことを「オーバーレイ」と呼ぶので、余裕があったら覚えておいてね。

f:id:Mafuyu7se:20190403221955p:plain


この状態で、先程教えたとおりにコミットとプッシュを行ってください。
コミットメッセージの内容は特に指定はありません。
「"Hello Mafuyu!!"を10回表示するようにした」みたいな感じでいいです。

コミットが完了すると、Hello.cのオーバーレイが緑色のチェックマークに変わります。

f:id:Mafuyu7se:20190403223113p:plain


コミットが終わったら、ログを確認してみてください。
さっきの変更が記録されていることがわかりますね。
f:id:Mafuyu7se:20190404200236p:plain


このとき、変更したファイル名(青枠内)をダブルクリックすると、対象のファイルの変更内容の差分を見ることができます。
左側が変更前のコード、右側が変更後のコードです。
変更によって追加された箇所は黄色、削除された箇所はオレンジ色で示されます。
f:id:Mafuyu7se:20190404200504p:plain


「このコミットでどういう変更入れたっけな?」ってなったときは、こうすれば変更内容を確認できます。便利ですね。

プッシュまで終わったら、GitHubのリモートリポジトリを確認してみましょう。
f:id:Mafuyu7se:20190404200959p:plain

変更が正しく適用されているね。
これで変更履歴の追加は完了です。お疲れ様でした!

最後に1点補足。
今回は1件のコミットを行う毎にプッシュを毎回やっていたけど、必ずしもこの手順を踏む必要はありません。
例えば、ローカルリポジトリへ複数件のコミットを行った後にプッシュを行ってもよいです。
このとき、1回プッシュを行えば全てのコミットがリモートリポジトリに適用されます。

今回の説明はここまで!
Gitを使ってガンガン個人開発をやっていきましょう!!


スポンサーリンク



■ まとめ

・ローカルリポジトリへ変更履歴を記録することを「コミット」と呼ぶよ!
・ローカルリポジトリの変更をサーバ上のリモートリポジトリに適用することを「プッシュ」と呼ぶよ!
・基本的には、「作業フォルダ内を変更」→「コミット」→「プッシュ」を繰り返して開発を進めていくよ!
・ローカルリポジトリに複数件のコミットを行ったあとに、まとめてリモートリポジトリにプッシュしてもいいよ!


「Gitを使ったチーム開発の進め方」とか、「GitによるUnityプロジェクトのバージョン管理」みたいな記事も気が向いたらそのうち書こうかなーって思ってます!

では、また次回の記事でお会いしましょう・:*+.\( °ω° )/.:+


にほんブログ村 IT技術ブログへにほんブログ村