Gitマスターへの道#1 用語いろいろ
はじめて弊社ブログに記事を投稿します。高須です。
昨年4月に入社したので、シンテグレートで働きはじめてからもうすぐ1年が経とうとしています。このブログには英語翻訳(例えばこの記事やこの記事)として静かに参加していましたが、今回は記事を書くことになりました。
早速本題に入っていきます。
弊社チーム内で、全員が共通して使うコードや3DモデルをGitで運用・管理することになりました。
Gitって何……?と思った読者の方もいるでしょう。大丈夫です。あまり大きな声では言えませんが、私もチームでGitを使いますと言われたときに全く同じことを思いました。
Githubのアカウントなら4年前に勢いでつくったけど使ったことはないし、どうやらGitとGithubは違うものらしい……一体何者……??読み方は「ジット」じゃなくて「ギット」らしい……ブランチ……??リモートリポジトリ……コミット……??そもそもチーム内でどう使えばいいの……??といった具合にGit初心者だったわたくし高須が、知らないということをさらけ出し、Gitを1からマスターしていこう!というシリーズです。
インターネットで検索すれば、わかりやすくて正確なチュートリアルは世の中にはたくさんあります。そのためこのブログでは、チュートリアルはほどほどにして、実際にトライしてみる過程を書きながら、使ってみてどうだったか、どんな場合に役に立つか(逆に役に立たないか)といったレビューを中心に書いていこうと思います。
みなさんもひとまず私と一緒に、目指せGitマスター!
(今回は第1回目なので、Gitがわからない人のための、Gitが何なのかを知る回です。説明っぽい内容になりますがご容赦ください。もう知ってるよ!という方は次の記事から読むことをおすすめします。次回から具体的な作業やレビューを書いていきたいと思います。)
Gitってなに?
この記事ではまずGitがどんなものなのかを理解していこうと思います。
Gitのウェブサイトによると、
”Git is a free and open source distributed version control system …”
日本語にすると「分散型バージョン管理システム」とのことでした。ふーん……日本語にしてもよくわかりませんね。短めに説明すると、作業者が複数人でもファイルのバージョン管理が簡単にできるツールです。
複数人で、且つリモートで1つのプロジェクトに取り組んでいるとき、誰もが経験したことがあるこんな場面、
「誰かが作業中に同じファイルをいじってしまったせいか、2時間のわたしの苦労が消えている……」
「1つ前のバージョンのどこを変えたんだっけ……?」
「コードの一部だけ試しに変えたいけど、変えるとプロジェクトに影響しそうだから変えにくいな……」
ここらへんの小さな(そして積もったら大きな)ストレスを未然に防ぐことができるありがたいシステムです。
Gitで何ができるの?
具体的に説明すると、Gitによって可能になることは主に以下の4つです。
- 編集した履歴を複数人で共有できる
- 古いバージョンに簡単に戻せる
- 新旧のファイルを一元管理できる
- 複数人で修正した部分を一つに統合できる
Gitによるバージョン管理では、いつ、だれが、どのファイルのどこを、どう変更したかの履歴を、変更者のコメント付きで残すことができます。最新のファイルの過去の状態を確認したり、ある時点の履歴を復元することもできます。
また、「ブランチ」という機能によって、履歴を枝分かれさせて記録する事ができ、他のブランチに影響を受けることなく作業をすすめることができます。元となるブランチから作業用のブランチに枝分かれして作業を進め、ブランチでの作業が完了したら、元のブランチのファイルと統合することができるのです。
どのように管理しているの?
Gitは、バージョン管理システムの種類の中で「分散型」に分類されます(だから日本語で「分散型バージョン管理システム」だったんですね)。
分散型は、それぞれの端末ごとに保管場所(ローカルリポジトリ)が作成されるので、自分の端末に作成したローカルリポジトリに対してはいつでも変更を登録することができます。
チームで一つのリポジトリを共有してプロジェクトを進めていきたい場合は、サーバ上にリポジトリを用意して、ネットを介して管理できるようにします。このようなリポジトリを「リモートリポジトリ」といい、それをホスティングしているWebサービスの一つが「Github」です。
チームで作業をする場合は、一般にリモートリポジトリを複製したもの(クローン)を各自のPCにつくり、それをローカルリポジトリとして作業を進めていきます。そして作業が終わったら、変更をリモートリポジトリに反映(プッシュ)することで、共有しているファイルのバージョンをサーバ上で管理しています。
まとめ
今回はGitの基本の「き」を、私の頭の整理も兼ねてまとめてみました。チームで作業をするとき、普段は「このファイルを今から開きます」「保存して閉じました」と毎回チャットに投稿して諸問題を防ぐ努力をしてきましたが、ファイルの種類によってはGitを使うことでその手間が省けそうですね。
次回からは具体的な作業をしていきたいと思います。
余談ですが、入社してからほとんどの期間はリモートで働いていたので、同じチーム以外の人とあまりお会いできていません。そこで社員どうしのコミュニケーションを促すために、毎回ランダムに二人一組アサインされてオンラインでおしゃべりする「シャッフルミーティング」という時間が設けられました。直接お会いするのとはまた違った緊張感がありますが、こういった方法をたくさん試してみて、これからの働き方にあったコミュニケーション方法が確立できたらいいなと思います。