何の記事?
この記事は鎮宮'sアドベントカレンダー20254日目の記事です。
昔、趣味で触っていただけだったGitを業務でも使うようになったので、復習の際に役立ったものや、地味につまづいたポイントについて書きました。
誰向け? どんな役にたつ?
- Gitを業務で使うと言われたけど、何からどうやって勉強し始めたらいいかわからない人
- Gitを使わなくてはいけないけど、周りに使い方を教われる人がいない人
- Gitをなんとなく使っていて、細かな仕様がわからなくて不安な人
- Gitを仕事で使える程度には理解したいけど、どんな順番で勉強すればいいかわからない人
Gitってナニ?
A. フォルダ内のデータを、ここでセーブしといて!……ってやれるツールです。
Q. でも、ゲームみたいにセーブデータの上限とかあるよね?
A. ないです! 全部のセーブポイントが道になって繋がっていくので、好きな時に好きな過去に戻れます。
Q. 一人でコーディングする分には、あんまり関係なさそうだし、セーブしながら進めなきゃとか、管理とか大変そう
A. そんなことないです! むしろ、「12/1のアドカレ」「12/1のアドカレ2」……とか、ファイル名とかフォルダわけで管理する方が大変です。
だってみんな馬に「あああ」とか「いいい」とかつけるでしょ?
ソースコードも多分同じようなことになりますよ。私はなった。
Q. セーブデータをわけれて、タイムマシンで戻れるだけだとイマイチ旨味を感じないかも……
A. もっと言うと、並行世界を作って進めるのもGitの嬉しいところ!
Webサイトで言うなら、新しいページを作ってる人と、ボタンデザインを作ってる人の世界を分けて(ブランチ──枝を分ける)、どっちもいい感じのとこまで進んだら元の世界に戻ってくる……ってことができるよ。
新しい機能を追加してる傍で、バグの対応をする世界を生やすこともできる。
Gitがあると、自分の足跡をしっかり残しながら進むことができる!
お金がかかるツールではないので、ソースコードを書くよーって人はとりあえずGitを使うと幸せになれます。
助けてくれたもの
とはいえ、じゃあその便利なGit、学ぶコストってどれくらい?
どうやって勉強しろっていうの?……という話になるかと思います。
私が初期の勉強に使ったものと、復習を支えてくれたものを紹介します。
改訂2版 わかばちゃんと学ぶ Git使い方入門
知る人ぞ知る、優しく漫画でGitが学べちゃう本です。
素朴な疑問から実際のあるあるを交えた漫画でGitを学べるので、文字でじっくりよりも抵抗が少なくおすすめです。
確か書籍化してる内容のさわりというか、お試しで読めるものがどこかにあったはず……と思って探したら作者さんがまとめていてくれました。ありがたや……!
私は1版を持っているのでコマンド操作編はなく、GUIでGitを操作できるSourceTreeについての解説のみなのですが、GUIで慣れた後にコマンドも操れるようになると、コーディングしながら都度コミットできて良いのではと思います。
実際、コマンドで動きを意識した方が習熟していく感覚もあります。
SourceTree
言わずと知れた?Gitのバージョン管理をコマンドラインを使わずにできるアプリケーションです。
「今ドコ???」「枝どんな風に伸びてたっけ」「あの時まで時間を戻したいけど、どこだっけ」
……この辺りの悩みが、画面上のクリックで視覚的に確認しやすいのでオススメです。
私は上記のわかばちゃんのGit本でも使われていたこともあり、最初のGitはこのSourceTreeから復習していきました。
コマンドを覚えなきゃとか、どこのブランチに移動しなきゃとかがクリック操作で直感的にできるのはやっぱり強い。デフォルトでツリー表示があるのが本当にありがたい。
ただ最近は「これって結局どう言うことなんだろう」とか「Vim画面閉じずにコミットしたいぞ?」とかが出てきたのでコマンド派に移りつつありますが。
魔王教授と学ぶGitコマンド入門 【ダウンロード版】
実はこの本をダウンロードで読んで、それからGitコマンド操作について調べていたら下記のコマンド編連載漫画を発見したりなどしました。
内容としてはGitの初期コマンドについてのみなので、GitをSourceTreeなどのGUIツールで理解した人か、最初からCLIでGitを触りたい人の最初のステップとして読むのがいいかなと思います。
PDFでもっておくと、ふとした時にスマホでさっと確認できるのは便利ですよ。
マンガでわかるGit 〜コマンド編〜
上記、わかばちゃんのGit本の作者さんのnoteにもリンクはあるのですが、記事のマンガGitのみ抜粋。
noteまとめ時点では11話までだったようなのですが、19話まで、コマンド版のGit解説が読めます。
コマンド操作だとどうしてもビジュアル面の情報が足りず「結局何やってるのこれ?」……となりがちな面を、優しく漫画で埋めて下さる素敵連載です。
私は上記のGit本で感覚は掴めてきたので、今はもっぱら、このコマンド編を時折見ながらGitしてます。
改訂2版の本だと、この辺りも1冊の本でおさまってるのかな……。
地味につまづいたこと
せっかくブランチをわけたのに1本になってしまう
SourceTreeでコミットをしていた時のことです。
ざっくり図で説明します。

こんな感じでDevelopブランチは何度かコミットをしていて、mainブランチはそのままの状態だったとします。
すると、開発面がOKになって動くようになったらmainブランチにこんな感じでmergeしたいなーとなるじゃないですか。
でも、実際にSorceTreeでmergeしたらこうなりました。
時間差でストーカーして合流しないでよ!!!
これだと、mainとDevelopのブランチを後からわけても同じログになってしまって、正確なログにならないよな……ってことは、なんかやり方か設定がおかしいのか……?と調べたら、SourceTreeの設定でした。
▼ググったところ、サル先生のGit入門にそれらしき記事が。
fast-forwardという設定が生きているとそうなるとのこと。
ググったら同じ現象仲間の方もいて、設定で解消できることがわかったので心強かった。
設定の問題だと言うことがわかったところで、fast-forwardしないようにmainブランチにDevelopブランチをマージします。
- Developブランチにいる状態で
- 右クリックや画面上のマージボタンでマージを選択
- どこにマージするかを選ぶ画面でfast-forward でマージが解決された場合もコミットを作成するにチェックを入れる
- マージを実行
……で、やりたかったマージの形になりました。
おすすめ学習ルート
- わかばちゃんと学ぶGit本を読む(読むだけでもいい)
- Git本を見てSourceTreeの操作に慣れる
- SourceTreeの操作に慣れてきたorSourceTreeではできない操作もやりたくなってきた→Gitコマンド入門でGitコマンド操作をできるようにする
- Gitコマンド漫画でGitを深く学ぶ
ざっくり書くとこんな感じです。
最初はSourceTreeの画面を通してGitをぽちぽちして、Gitが怖くなくなったら、コマンドに手を出してみる……がいいかなと思います。
Gitは奥が深く、コミットログが伸びてきてから「あの時点で枝を分けておけば良かった」「管理方法間違えた」となることもしばしばあります。
ただまぁ、リセットしたり、ルールを途中で変えて見たりしながら触っていくことで学べることはたくさんあるので、ゆるーく触ってみるのがいいかも……という印象です。
あと、AIにコードを書かせる人でも、Gitというセーブポイントがあると戻りやすくていいかなと思います。
確か今は設定次第でAIが自動でコミットしたりプルリクしたりまでやってくれるんだったかな……。そういう点でも、Gitは学んでおいて無駄になるものではないと思います。
そんな訳で、Gitを久々に学び直した人の、わかばちゃん宣伝記事になりました(笑)
でも本当、Gitって何?学びたいって人にはこの一冊!……だと思います。
この本が合わない人を考える方が難しいくらい、誰相手でもこの本どうぞになってしまう。
そんな良書なので、これからGitを学ぶ方は是非是非。