分散型バージョン管理システム
Gitは分散型のバージョン管理システムで、テキストファイルなどの変更履歴を管理するツールである。もともとは Linux のカーネル開発でソースコードのバージョン管理を目的に開発され、オープンソースで誰でも利用できる。
プログラムのソースコードはどの言語でもテキストファイルなので、Gitを使用することで修正履歴を管理できるようになる。RPGのソースコードももちろん履歴管理が可能である。
Gitはマルチプラットフォーム対応で、WindowsやMacOS だけでなくIBM iでも導入できる。ただし今回はRDiを使用してコードのバージョン管理を行うので、IBM i上のGitは使用しない。
Gitで使用する基本用語
Git にはバージョン管理システム特有の用語があるので、最初にそれをチェックしておこう。
<ローカル作業で使用する用語>
●リポジトリ
テキストファイルとその履歴(差分ではなく変更ごとのイメージ)の保管先のこと。リポジトリは、個人もしくはプロジェクト単位でローカルのディスクに作成し、通常はそのローカルのリポジトリを操作する。
共同作業の場合は、コード履歴を共有するためにネットワーク上にリポジトリを配置するが、これを「リモート・リポジトリ」と呼ぶ。リモート・リポジトリをホスティングするサービスとして有名なのがGitHubである。また、GitHubクローンのGitLabなどのサーバーもある。
●コミット
修正したソースコードをリポジトリに記録すること。コミットすると、修正したファイルのイメージと同時に、コミットしたユーザー名とメールアドレス、直前のコミット情報などが記録される。
●コミットID
コミットを一意に識別するためのID。値はSHA-1ハッシュ関数を用いて生成された値を40文字でコミットIDとする。40文字で一意だが、最初の数文字でコミットは特定できる。
●ワークツリー
コード・エディタが操作するファイルのあるフォルダのこと。このワークツリー内にローカル・リポジトリがある。
●ステージングエリア
コミット対象のファイルをまとめておく場所(図表2)。ワークツリーの変更を直接コミットするのではなく、コミットするものだけをいったんこのエリアに追加する必要がある。
ワークツリーとステージングエリアのファイルは同名であっても管理は別なので、コミットしない変更を続けてワークツリーで修正できる(ワークツリーで修正しても、再度ステージングエリアに追加しないとコミット対象の変更にはならない)。
●ブランチ
ソースコード群(テキストファイル)の修正を保存したコミットIDに付けた名前である。ブランチを参照することで、その状態をいつでもワークツリーに復元できる。ソースコードの修正をコミットすると、新しいコミットIDにそのブランチが移動する。デフォルト・ブランチはmaster(main)で、必要に応じて自由にブランチを作成できる。詳細は後述するが、開発者は案件ごとにブランチを作成してコードを修正していく。
●HEAD
ワークツリーに現在チェックアウトされているブランチを指すポインター。ブランチではなく、コミットIDを直接指し示した状態を「detached HEAD」という。
●チェックアウト
ワークツリーの内容を、特定のブランチもしくはコミットIDが指し示すバージョンに置き換えること。
●マージ
2つのブランチを1つにまとめること。バグ修正用に新規に作成したブランチを、修正後にmainに合流する(本稼働する)ときに行う。
●コンフリクト
マージする際に、2つのブランチで同じファイルの同じ行で異なる修正がされていたなど、Gitでマージできない現象が発生した場合のこと。コンフリクトが発生すると、Gitがマージできなかった箇所を教えてくれるので、手作業で修正する。コンフリクトは、個人のリポジトリ内では発生する可能性は低い(作業しているのが1人なので)。
<共同作業で使用する用語>
●プッシュ
コミット情報をリモートに送信すること。通常、プッシュするブランチを指定する。
●プル
リモート・リポジトリにあって、ローカル・リポジトリにないコミット情報を取り込むこと。
●プル・リクエスト/マージ・リクエスト
リモート・リポジトリ内で、あるブランチを別のブランチにマージするよう管理者に要求すること。PR やMR など、略して使われることが多い。
GitHub 用語はプル・リクエスト、GitLab ではマージ・リクエストという。実際のマージ作業前に、変更点を表示してコード・レビューする、マージしたらコンフリクトしない、などを事前に確認できる。
これらの操作は、通常Gitコマンドを使用して実施されるが、コマンド・プロンプトでの作業はわかりづらいので、以降の説明はすべて RDi のインターフェースの操作で説明する。
著者|
小川 誠氏
ティアンドトラスト株式会社
常務取締役
1989年、エス・イー・ラボ入社。その後、1993年にティアンドトラストに入社。システム/38 から IBM i まで、さまざまな開発プロジェクトに参加。またAS/400 、IBM i の機能拡張に伴い、他プラットフォームとの連携機能開発も手掛ける。IBM i 関連の多彩な教育コンテンツの作成や研修、セミナーなども担当。2021年6月から現職。
[i Magazine・IS magazine]