読書メモ。2025年48冊目。
『いちばんやさしいGit&GitHubの教本 第3版』を読んでの感想となります。(2025/6/30記載)
本の概要
実際のワークフローをイメージしながら、実践的なGit/GitHubの使い方が身につく「いちばんやさしい」入門書です。前半は手元のパソコンでファイルを実際にバージョン管理しながら、Gitの基本的な使い方を解説。後半は実践的なワークフローに沿ってGitHubを使い、チームメンバーと一緒に開発を進めるための知識が身につきます。改訂版ではswitchやrestoreなどの新しいGitコマンドにも対応。初めて学ぶ方にも、すでに使っていて知識を整理・アップデートしたい方にもおすすめです。
引用:
動機
感想
コミットやプッシュは開発プロセスにおいて特別な儀式だと思っています。
それまで自分だけの世界で作っていたものを、他者の目に見える場所に他者が作ったものと混在させる行為だと思っています。
充分に理解しきれないままコマンドを打ち込むことには、絶えず他者の成果物を壊してしまうのではないかという不安がつきまとっていました。
改めて、プロダクトやチームを大切に思うのであれば、基礎知識として押さえることは必須だと思いました。
Gitコマンドを通じたリポジトリ操作は、開発チームの一員としてプロダクトを前進させるための重要なコミュニケーション手段だと感じました。
今回改めて学ぶことができてよかったです。
忘れたくないメモ
私が本書を通じて得た理解や気づきを、自分のためにも書き留めたメモです。
特に印象に残ったポイントを振り返ります。
コミット単位
コミットを意味のある小さい単位にすることでcherry-pickやrevertがしやすくなる。あるプログラムに機能を追加していくとき、「機能Aを追加したコミット」と「機能Bを追加したコミット」を分けておけば、コミットの行き来により「機能Aだけの状態」「機能Bだけの状態」などにあとから切り替えることも容易になります。また、コミットがきれいに分割されていることにより、 他の人が履歴を追いやすくなります。
SVNで開発をしていた頃はそうした意識が無かったような気がします。
ローカルリポジトリとリモートリポジトリ
ローカルリポジトリが誰かと共同で使うことが無いことによって、トライ&エラーがしやすい環境となっていると理解しました。リポジトリはローカルリポジトリとリモートリポジトリに分類できます。
ローカルリポジトリは、手元で使っているパソコン内に作成する自分専用のリポジトリです。基本的に誰かと共同で使うことはありません。
それに対してリモートリポジトリとは、インターネットなどのネットワーク上に存在するリポジトリのことです。複数人で共有するものとして、サーバー上に配備するのが一般的です。
そのうえで、必要な試行錯誤を通した上で、リモートリポジトリに取り入れる必要があることも理解できました。
コミットの打ち消し
原則として、一度コミットにより記録された内容は変更・削除されないものと思ってください。たとえば仮にあとからコミットを取り消す操作を行っても、取り消す前後の状態がいずれも記録として残るので、コミット自体がなかったことにはなりません。
取り消しは履歴を消すことではなく、消す行為を履歴に加えることとして理解しました。
そのうえで、本線の履歴に余計な変更が混ざらないように、ローカルリポジトリで試行錯誤する必要があると捉えています。
origin
コマンド打つ際に盲目的に書いていました。意識して使う必要があると反省しました。実はGitでは、1つのローカルリポジトリに対してリモートリポジトリを複数設定できるので、それぞれを識別するために名前が必要です。クローンすると、 クローン元のリポジトリにはGitが初期値として「origin」という名前を付けます。
ブランチの単位
作業の意味ごとにブランチを作る
ひとりでの作業でも、複数人での作業でも、作業する人数に関わらず「作業の意味」ごとにブランチを作ることが、関心の分離という観点からも重要だと感じました。
コンフリクト
複数人で同じファイルに手を加えただけで即コンフリクトしていた時代を知る身としては、「同じ箇所に異なる変更」がなければマージできるという仕組みに感動しました。この理解をするだけでもチーム内でお互いの作業影響を懸念する認知負荷が軽減し、作業しやすくなると思いました。マージする2つのブランチがそれぞれ同じファイルの同じ箇所に異なる変更を加えていた場合、Gitはマージの仕方を判断することができません。
コンフリクト発生中の作業
集中力の問題ばかり意識していましたが、コンフリクト解消以外の内容がコミットに入ってしまうことまで意識できていませんでした。コンフリクト発生中はなるべく他の作業をせず、まず解消してマージしきることをオススメします。他の作業をすると、 コンフリクト解消以外の内容がコミットに入ってしまい、あとから作業の意味がわかりづらくなる恐れがあります。
その場の集中力だけでなく、後から履歴を読む他者の集中力も乱す可能性があることを理解しました。