かんたんに特徴を述べる。
履歴管理
コミットという「ファイルをどのように変更したか」という単位を記録していくことで、履歴管理を実現する。x番目の変更と、x-i番目の変更を照らし合わせれば、どこがどう変わったのかがわかる、という発想で履歴を閲覧する。もちろんx番目とx-100番目という「離れた」比較もできる。
ユーザーはきりのいいタイミングで毎回コミット操作を行う必要があるが、その対価としてこのような履歴を手に入れることができ、いつでも参照したり、差分を調べたり、あるいは特定地点に復元したりできるようになる。
操作は煩雑
元々はプログラマーがコマンド上で操作する前提でつくられているため、Git本体はコマンドである。また、そもそも複雑なOSの開発を成り立たせるために生み出されたものであるため、本質的に複雑であり、一通り習得するだけでも本数冊を要するレベルである。
ただし近年ではGUIツールなどかんたんに使うための手段も整備されている(VSCodeもここに含まれる)ため、プログラマーでなくとも頑張れば使える程度には敷居が落ちている。たとえば作家と編集者が使ったり、就業規定をこれで管理する会社があったりする。
共同作業
Gitの本質は複数人の共同作業を成り立たせることであり、そのための機能が豊富にある。ブランチと呼ばれる「世界線を複製する」機能があるため、各自自分のブランチをつくってそこで作業をすればよい。その後、マージと呼ばれる「ブランチとブランチを上手いこと合体させる」操作があるため、これで統合していく。そもそもリポジトリという作業単位も存在するため、プロジェクトA用、プロジェクトB用、プロジェクトBの本番用と試作用など、いくらでも設けることができる。
最大の公益は、Gitという「複数人共同作業の共通言語」の普及であろう。私たちはGitを覚えておけば、世界中どこであっても、言語が違う相手であっても、共同作業ができるのだ。実際、世の中のテクノロジーを支えるオープンソースソフトウェアはまさにGitを用いて日々つくられているし、GitHubもそんなGitを前提としたプラットフォーム(そしてSNS。Social Codingとも呼ばれる)である。
タスク管理への活用はまだ開拓されていない。
タスク管理自体はそこまで複雑な世界ではないため、正直言って持て余すのである。やはりプログラムや創作物など「ものづくり」を行う――特に複数人で共同して行うほどの複雑性があってこそ、真価を発揮する。
---