ブランチ
Git リポジトリのファイルに加えられた変更は一つ一つが全て記録されています。この変更の列は 1 本の ブランチ を成します。
ファイルの変更履歴
前章の最後の画像を再掲します。ウィンドウの左下部分に注目してみましょう。
更新を表す ○ が縦に直線で結ばれて連なっているのがわかります。コミットをする度にブランチは図の上方向に伸びていきます。
コミットグラフ
このように ○ と ○ 同士を結ぶ線によって変更の履歴を表現した図を コミットグラフ と呼びます。情報分野の「グラフ」が一般に「点を線で繋いだ図」を表す言葉だとご存知の方がいるかも知れません。ソース管理タブのボタンのアイコンや Git 自体のアイコンの意匠はこのコミットグラフが元ネタになっています。枝分かれしているように見えるのは後編のネタバレなので一旦見なかったことにしてください。
ちなみに、リポジトリのコミットグラフは Gitea 上でも見ることができます。探してみましょう。
下の図でマウスのカーソルがある位置、ソース管理の最上部の「README.md 更新」と出ている部分をクリックすると README.md の 3 行目とその下に赤と緑の帯がついて表示され、よく見ると左端にはそれぞれ「ー」「+」と表示されています。これは、コミット「README.md 更新」では元々何も無かった 3 行目を「Hello Git!」に書き換えた、ということを表します。
コミットグラフの隣に表示されているコミットメッセージと合わせると、一つ一つの変更について「どういう意図で」「どこをどう書き換えたのか」の情報が揃います。Git の一番の役割は「共同開発のバージョン管理を手助けする」ことですが、個人開発で Git を使うことにも「ひとまとまりの変更とその目的をあとから参照できる」という少なくとも一つの嬉しさがあるわけです。
参考までに、長くなると左下のコミットグラフはこうなります。存分にブランチが伸びまくっていて、下方の古い変更は見切れています。
Gitea の役割
ここまでの操作を通して、Git と Gitea を組み合わせることでクラウドストレージのような使い方ができると分かりました。また、よくあるクラウドストレージと異なり、
- 同期は手動で行う
- 同期するディレクトリはデバイス内のどこにいくつ作ってもよい
- 変更履歴を分かりやすく確認できる
などの特徴があることが分かりました。
今更ながら Gitea を一言で表すと「Git リポジトリのホスティングサービス」です。Git は複数の場所に置かれたディレクトリ同士を上手く同期するために巧妙に作り上げられたツールです。ホスティングサービスはそのうち一つをサーバーに保管してくれるので、そことの同期を介して複数のデバイスに存在するディレクトリを同期させることができます。
Gitea を使って Gitea を立てる
Gitea とは GitHub や GitLab などと同じホスティングサービスである、という説明はあながち間違いではないのですが、誤解を生みかねないので 2 つの Gitea を区別してご説明します。
Gitea は GitHub や GitLab と同様のホスティングサービスを自分たちでサーバーを立てて運用するために活用できるオープンソースソフトウェア(OSS)です。traP でも Gitea を利用してサークルが管理するサーバーにホスティングサービス git-lecture.trap.jp や git.trap.jp を立ち上げ、そしてそれらをそのまま Gitea と呼んでいます。このテキストのここ以外で登場する Gitea は全て後者です。
GitHub と Gitea は同じ役割を与えられたサービスであるだけに、Web ページの見た目や構造も瓜二つです。強いて言えば GitHub は日本語に対応していないのですが、Gitea を使いこなせるようになれば GitHub の基本的な使い方もある程度は類推できるはずです。