自作ソフトウエアをオープンソースとしてインターネット上に公開するためには、GitHubは必須ツールだろう。GitHubは公式サイトを始めとして様々なところで解説が行われているが、やれる事が多岐に渡っていて機能がてんこ盛りのためドキュメントも膨大にあり、それらを端から読んでいては時間がいくらあっても足りず効率が悪い。
そこで今回は「習うより慣れろ」の精神でGitHubに練習用リポジトリを作成し、実際に操作を体感してみた。
リポジトリの新規作成
GitHubにサインインする(アカウントが無い場合はまずサインアップ)。サインインした状態で、以下の操作を行う。
- 画面右上の”+”記号をクリックするとメニューが表示される。メニューから”New repository”を選択。
- “Repository name”に適当なリポジトリ名を入力(“test”とした)
- “Description”に説明書きを記述(省略可)
- Public/Privateの選択。練習用なので、Privateでいいだろう。
- “Initialize this repository…”にチェックを入れると、初期設定ファイルを自動生成してくれる。
- “Add .gitignore”はGitHubによるバージョン管理の対象外とするファイルの種類を指定する。今回はNoneのまま(選択しない)。
- “Add a license”には、自作ソフトウエア公開時のライセンス形態を指定。特にこだわりが無ければ、利用者側に一番制約が少ないMITライセンスにするのが良いだろう。

最後に上記画面一番下にある”Create repository”と書かれた緑色のボタンを押す。すると、ライセンス条件が記されたテキストファイル”LICENCE”とMarkdown形式の説明ドキュメント”README.md”がリポジトリに自動生成される。
上の操作を行った直後のリポジトリ表示は以下。ライセンス条件も指定通りになっており、自動生成されたREADME.mdの中身が整形されて表示されている。

作ったリポジトリをローカルにcloneする
サーバからローカルにリポジトリをcloneするにはgit cloneコマンドを使う。
$ git clone https://github.com/goediy/test
$ cd test
途中、GitHubアカウント名とパスワードの入力が求められる(publicの場合は聞かれない)。
この操作によりディレクトリ(test)といくつか管理ファイルが作成され、リポジトリの構成ファイルがサーバからローカルへコピーされる。
ローカルでの作業
リポジトリをcloneして作成されたディレクトリの中で、ファイルを追加したり編集したり開発作業を行う。
事前準備
この作業を行わないと、GitHubのログにローカルシステムのユーザ名情報がそのまま使われてしまう。本名ではなくハンドル名でログに記録させたい場合などは以下を実行する。
$ git config --global user.name "Name"
$ git config --global user.email name@mail.domain
ファイルの追加
test.htmlを適当な内容で作成し以下のコマンドを実行する。
$ git add test.html
この操作により、GitHubによるバージョン管理の対象としてリポジトリにtest.htmlが追加され、後述のコミットの対象となる。
複数ファイルをディレクトリにコピーした後、全てリポジトリに追加する場合は-Aを指定すればOK。
$ git add -A
既存ファイルの編集
既にバージョン管理対象のファイルを変更した場合は以下を実行する。
$ git add -u
これを実行しない限りコミット対象に追加されず、編集内容がリポジトリに反映されないので注意。
現在の状態を表示
git statusコマンドでローカルリポジトリの現在の状態を表示出来る。
$ git status
ブランチ master
Your branch is up to date with 'origin/master'.
コミット予定の変更点:
(use "git reset HEAD <file>..." to unstage)
new file: test.html
gitコマンドは基本的にあまりメッセージを出さないので、何が起こっている確認したい時にgit statusコマンドは便利だ。
変更内容のコミット
git commitコマンドでコミット対象ファイルの変更内容を確定させる。
$ git commit -m "Added test.html"
-mの後の文字列は更新されるファイルに関するコミットメッセージだ。コミットメッセージはファイルのバージョン番号と共にGitHubシステムが管理する更新履歴に記録される。
ローカル作業をサーバへ反映させる
git pushコマンドでローカルでの作業内容をGitHubサーバへ反映させる。
$ git push origin master
ここでも途中GitHubアカウント名とパスワードの入力が求められる(ssh鍵認証の設定を行えば省略出来るようだ)。
以下がgit push後のサーバ上のリポジトリ表示。ローカルで追加を行ったtest.htmlがリストに確認出来、コミットメッセージとして指定した文字列も表示されている。

但し、リポジトリがmasterではなくbranchだったりすると、上記のgit push origin masterと同じではダメなので注意。ブランチ名の指定を適切に行う必要がある。詳細は公式ドキュメントを参照。
まとめ
今回は、以下の作業をひととおりやってみた。
- GitHubサーバで新規リポジトリを作成
- 作成したリポジトリをローカルにcloneして作業
- GitHubサーバへpushして作業内容を反映
git addやgit commtなどのコマンドはCVSやSubversionなど旧来のバージョン管理システムでも類似の物があったので背景となる基本思想は変わっていない印象を受けた。しかし、Webブラウザ上でリポジトリの初期設定が出来たり、サーバ上のリポジトリの状態をWebブラウザから確認出来るなどGUI操作の完成度が高く、その一方でローカルでのファイル追加や編集などはコマンドラインで簡単に出来るため、作業の合理性が高く非常に洗練されている。その他にも、別記事にまとめた通りGitHubには様々なクラウドサービスやツール群と連携する機能も備わっていて、効率的に開発が進められる。
旧来のバージョン管理システムが駆逐されてGitHubが定番へと成長したのも納得である。
コメント