背景
幸いなことに、継続的にチーム開発に参加する機会を得ました。ボトムアップなアプローチとして、まずは ゼロから学ぶGit/GitHub を読み、 Git の基本を学び直しました。
本の感想
序盤から話が上手く、流石大学の先生だと思いながら読んでいました。 1 ページ目からパンチラインが凄いです。僕自身の文脈としては、一件目の読書記事にふさわしいかもしれません:
もし何かの間違いで、コードを開発しているのにバージョン管理システムを使っていない会社に入社してしまったら、すぐに逃げてほしい。その会社は効率の悪さを開発時間でカバーしており、あなたの時間を搾取している可能性が高い。
贅沢な解説も嬉しいです:
このように、サーバに必要なファイルを準備、および配置する一連の作業をデプロイ (deploy) と呼ぶ。
序盤から git rebase や git bisect を前面に出していた点が良かったです。デバッグの短いプログラマを良いプログラマとするのも金言。また最終章で blob, branch, commit, tree といった Git オブジェクトの概要を復習できて良かったです。
その他、興味・関心
技術習得という意味では、以下の項目に興味があります。適宜調べてみようと思います。
知りたいこと
[ ]Git の内部的なオブジェクトモデルの把握
[ ]スナップショット形式における容量削減について[ ]差分保存形式との比較、メリットとデメリットについて[ ]reflogとresetで復旧できること、できないことについて
[ ]Rebase 時の conflict の解消について知る
[ ]なぜ同じ conflict を繰り返し解消しなくてはならないのか
[ ]スナップショット方式であるため?[ ]Jujutsu であれば発生しないのか
[ ]git rerereの使い方と信頼性について
[X]モダンな Git コマンドに慣れる
[X]Unstaging (git reset->git restore -S)[X]Detached HEAD (git checkout->git switch -d)
[-]Git の設定関係
[ ]Git Hooks の仕組みと git-secrets の導入[ ]git push --force-with-leaseをデフォルトにする (または alias にする)
[ ]--no-force-if-includesの方が安全なんですね
[X]git pushを非同期実行にする (Magit における 実装 を調べる)
- まあ
git push &で十分か?
- まあ
[ ]git clone時に URL スキームをhttps://からgit@github.com:に変更する
[ ]チーム開発
[ ]GitHub Actions 以外の CI 導入 (Circle CI など)[ ]Circle CI から GitHub Actions への移行検討[ ]ある PR に依存した別の PR の作成について[ ]Git LFS およびアセット管理について
[ ]サーバ関係
[ ]Force push 後など、サーバ上に dangling (?) commit が発生した場合の削除方法[ ]Git のローカルサーバの運用方法[ ]GitHub の複数アカウント所持の是非や運用方法[ ]GitHub とローカルマシンが連携した CI の導入
[ ]Emacs の環境改善
[ ]Magit の未使用の機能を使い込む[ ]ediffの使い方を把握する
- 3-way diff, マージ処理
- 3-way diff, マージ処理
[ ]smerge-mode以外に良いキーバインドがあれば習得する
[ ]その他
origin/mainとorigin mainの違いを整理する@,HEAD{3}のような表記法を整理する:/がリポジトリのルートを指すのはどのような場合か整理する
まとめ
モダンな Git 入門書を読みました。本書が扱うトピックを元に、次に何を知るべきか明確になったと思います。また入門書とはいえ概ね既知の内容であったため、基礎知識が十分にあると思えて嬉しかったです。