苦労してやっと作ったプログラム。どこまで修正したか分からなくなった?!ということが無いようにソースコードをしっかり管理しよう。
Gitを使ったソースコード管理
プログラムを作っていくとソースコードがどんどん増えていきます。
そしてソースコードを修正するときは、間違ったプログラミングをした時などに修正前の状態に戻したりすることもあります。
一度完成したプログラムも、その後で何か新しい変更を追加したり修正することもあります。
1つのソースコードは大きくなくても、数多くの種類ができあがることもあります。
こういった状態でどのソースコードがどこまで修正されているものか、どのバージョンのソースコードを修正すればいいのかなどの管理をしておかないと、せっかく作ったプログラムもどこまで期待通りに動くものなのか分からなくなってしまいます。
そのソースコードを管理するのがGit(ギット)です。
GitはもともとLinuxカーネルのソースコードを管理するために開発されました。
Git以外にもソースコードを管理するツールは古くから無料や有料含めて数多く存在しますが、現在は様々な企業や個人がGitを利用しているので事実上の標準ツールと言っていいかもしれません。
ソースコード管理には集中型と分散型があります。
管理ツールがでてきた頃は主にCVSやSVNなどの集中型でしたが、今はGitなどの分散型になっています。
そして管理の仕組みにはリポジトリという記憶領域を使っています。
リポジトリとは、ファイルやソース変更履歴などソースコード管理に必要な情報を一元管理するための貯蔵庫です。
以下に集中型と分散型の違いを簡単に説明します。
集中型
集中型はリポジトリが1箇所で、作業するメンバーはすべて1つのリポジトリを使ってソースコードの更新を行います。
このリポジトリにアクセスできないと更新作業ができません。
CVSやSVNなどが集中型です。
分散型
分散型はリポジトリがリモート(サーバー)とローカル(クライアント)に分かれて複数あります。
これにより普段の更新作業をローカルで行い、ある程度作業が進んだ時点でリモートを更新することで自分の更新や他メンバーの更新を反映できます。
つまりリモートにアクセスできない環境でも個別の更新ができます。
Gitなどが分散型です。
Gitの使い方
Gitは基本的にコンソールでコマンド入力して使います。
GUIツールもありますが、まずはコマンドによる使い方に慣れてからでも良いかと思います。
MacおよびWindowsでは標準でGitは使えないのでGitをインストールします。
インストールの方法はOSによっていくつかあります。
- 公式サイト からダウンロード(Mac, Windows)
- Git for Windows をインストール(Windows)
- Homebrewでインストール(Mac:「$ brew install git」でインストール)
- XCodeをインストール(Macの場合App StoreからXCodeをインストールするとgitが使えるようになります)
ここではインストール方法の詳細は説明しませんが、通常のアプリをインストールのと特に違いはありません。
Gitをインストールしたら使い方を見ていきましょう。
Gitを使う最初の手順は以下になります。
- Gitの設定
- リポジトリの作成(リモートリポジトリ、ローカルリポジトリ)
- 変更・追加したソースコードをローカルリポジトリへ追加
- 変更をローカルリポジトリへコミット
- 使用するリモートリポジトリを追加
- 変更・追加した情報を持つローカルリポジトリをリモートリポジトリへ反映
一度この手順を行った後は、ソースコードを追加・変更する度に3.4.6を繰り返し行います。
Gitの設定
Gitを使うためにはユーザー名とメールアドレスを事前に設定しておく必要があります。
この情報は、~/.gitconfigに保存されます。
$ git config --global user.name “hoge hoge"
$ git config --global user.email hogehoge@example.com
ここでの説明はGitHubを使うので、ユーザー名とメールアドレスはGitHubで登録するものにあわせておきましょう。
git statusなどのコマンドで日本語ファイル名を表示できるようにするには以下の設定を行います。
$ git config --global core.quotepath false
リポジトリの作成
次にリモートリポジトリとローカルリポジトリを作成します。
Gitは2つのリポジトリをコントロールします。
ソースコードはリモートとローカルの両方で記録されます。
リモートリポジトリがソースコードの本体、ローカルリポジトリがソースコードのコピーと考えます。
リモートリポジトリは1つだけですが、ローカルリポジトリは複数存在する可能性があります。
ローカルで複数同時にソースコードを修正しても本体には直接影響のない仕組みとなっています。
一人でソースコードを修正する場合は特に気にする必要はありません。
リモートリポジトリの作成(GitHub)
ここではリモートリポジトリはGitHubを使います。
GitHubについて記事の下部にある「GitHubとは」を参照してユーザー登録してください。
GitHubは無料で利用できるので安心してください。
そしてGitHubに登録したアカウントでログインしてください。
ログインしたときに表示された画面で「New Repository」ボタンを押してリポジトリを作成します。
リポジトリ作成時にPublicかPrivateを選択できます。(無料での利用はPublic)
リポジトリ名を入力して「Create Repository」ボタンでリポジトリを作成すると完了します。
リポジトリ名は何のソースコードなのか分かるような名前を付けましょう。
最後にリモートリポジトリのアドレスがHTTPS用とSSH用それぞれ表示されるのでメモしておきます。
このアドレスを後のGitコマンドで使います。
GitHubでなくサーバーにリモートリポジトリを作成するには以下のコマンドをサーバーで入力します。
$ mkdir myproject.git // サーバーのソース管理するユーザー配下にディレクトリを作成
$ cd myproject.git // そのディレクトリに移動
$ git init --bare --shared // リモートリポジトリの作成
ローカルリポジトリの作成
ローカルでソースコードのあるディレクトリに移動します。
そこにローカルリポジトリを作成します。
$ cd myproject
$ git init
変更をローカルリポジトリへ追加
変更・追加したソースコードをローカルリポジトリへ追加します。
$ git add myprogram.cc
ソースコードのファイル名を指定して個別に追加することもできますが、以下のコマンドでまとめて追加します。
$ git add .
「.」を指定するとサブディレクトリも含めた全てのファイルを追加します。
普段の利用ではこの「$ git add .」を利用すればファイル名を指定せず、変更されたソースコードはアップデートされ、新しく作ったソースコードは追加されます。
変更をローカルリポジトリへコミット
ソースコードを追加した後、ローカルリポジトリにこの追加を確定(コミット)させます。これによりリポジトリの履歴が保存されます。
$ git commit
このコマンドを実行するとエディタが起動されてコメントの入力を求められます。
入力後に保存してエディタを終了するとコミットが完了します。
入力するコメントには基本ルールがあります。
1行目:変更の要約(50字以内)、2行目:空行、3行目:変更の詳細説明(72字以内)です。
できるだけシンプルな記載をしたほうが、あとでログの確認時など読みやすいです。
また、以下のコマンドを入力すればエディタを起動せずにコメントと一緒にコミットできます。
$ git commit -m "[コメント]"
普段の利用ではこのコマンド入力でコメントと一緒にコミットするほうが作業しやすいでしょう。
使用するリモートリポジトリを追加
以下のコマンドで使用するリモートリポジトリを追加します。
ここではGitHubを使用するので、GitHubで作成したリモートリポジトリをコマンドで指定します。
$ git remote add origin https://github.com/username/myproject.git
ローカルリポジトリをリモートリポジトリへ反映
ローカルリポジトリに変更した内容をリモートリポジトリへ反映します。
$ git push origin master
最初にpushコマンド実行時するとユーザー名とパスワードを求めてくるので、GitHubの登録アカウントのユーザー名とパスワードを入力します。
Git作業のまとめ
これで最初の作業は完了です。まとめると以下になります。
$ git init // リポジトリの作成
$ git add . // 変更・追加したファイルインデックスを追加
$ git commit -m “[コメント]” // ローカルリポジトリへコミット
$ git remote add origin https://github.com/username/myproject.git // リモートリポジトリに追加
$ git push origin master // リモートリポジトリにプッシュ
次回からは、ソースコードを変更・追加する度に以下の繰り返しとなります。
$ git add . // 変更・追加したファイルインデックスを追加
$ git commit -m “[コメント]” // ローカルリポジトリへコミット
$ git push origin master // リモートリポジトリにプッシュ
GitHubにあるソースコードをコピーする
リモートリポジトリに既にあるソースコードをローカルにコピーすることができます。
この場合は、ローカルリポジトリも作成されるので(git init)は必要ありません。
GitHub(リモートリポジトリ)にソースコードがある場合、普段作業している所とは違う環境でソースコードを修正したい時で、且つGitを利用したい場合はgit cloneコマンドでGitHubにあるソースコードをコピーして作業します。
$ git clone https://github.com/username/myproject.git
git cloneコマンドを実行するとリモートリポジトリに登録されているフォルダ構成ごとローカルにコピーされます。
GitHubとは
GitHubは簡単にはGitの分散型にあるリモートリポジトリをインターネットを経由したクラウドサーバーで利用できるようにしたものです。
加えてSNS機能もあるのでフィードやユーザーフォローなどが使えプロジェクトをベースとしたコミュニティとして利用できます。
またGitHubを使えばGitの特性を利用してソースコードだけではなく、各種ドキュメントの管理もクラウド上で行えます。
GitHubはインターネットに繋がる環境であればどこにいても目的のプロジェクトのリポジトリを利用できます。
オープンソースのプロジェクトではよく使われていると思いますが、個人でも利用する価値のあるサービスです。
GitHubでリポジトリを作成する時に、PublicとPrivateのタイプを選択できるのですが、Publicで利用するのは無料でPrivateは有料となっています。
多くはソースコード管理を目的として使っていると思いますが、実は各種ドキュメントの履歴管理をするのにも便利です。
つまり、どのようなタイプのファイルでも履歴を保存し管理するのにとても便利なサービスなのです。
利用するための容量制限は無いのですが、リポジトリは1GB以下が推奨されています。それを超えると警告メールがきます。
1つのファイルは100MB以上のものをプッシュできません。50MBを超えるとこちらも警告メールがきます。
ここでは、Gitの使い方をリモートリポジトリとしてGitHubを使って説明します。
GitHubを利用するにはまずユーザー登録をして、自分の管理するリポジトリを作成できるようにします。