こう 聞かれます
- 「ブランチは
なぜ切るのですか」 - 「チームで
開発する とき、 ブランチを どう 使っていますか」 - 「全員が main に
直接 push すると、 何が 困りますか」 (裏から聞く形)
面接官が 見ている点
- ブランチの
仕組みより 先に、 「main を いつでも 動く 状態に 保つ」という 目的を言えるか - 1 つの
ブランチに 何を 入れるか (作業の 単位) を 自分の 言葉で 決めているか - ブランチの
作業を どうやって main へ 戻すか (プルリクエストと レビュー) まで話せるか
短い答え
- main を
いつでも 動く 状態に 保ったまま、 別の 作業を 並べて 進める ために 切ります。 - 1 つの
作業 (機能の 追加や 不具合の 直し) ごとに 1 つの ブランチを 切り、 名前で 中身が 分かるようにします。 - 作業が
終わったら プルリクエストを 出し、 レビューと 確認が 済んでから main へ 取り込みます。
少し 詳しい答え
ブランチの 中で 進めた 作業は main に 混ざらない
main で
ターミナル
git init -q -b main demo
cd demo
git config user.name Aya
git config user.email a@x.jp
echo "top" > index.html
git add index.html
git commit -q -m "トップを作る"
git switch -q -c login-form
echo "login" > login.html
git add login.html
git commit -q -m "ログイン画面を足す"
git branch
git log --format=%s main
git log --format=%s login-form* login-form
main
トップを作る
ログイン画面を足す
トップを作る* は
ブランチは コミットに 付けた名札
ブランチは
1 つの 作業に 1 つのブランチ
1 つの
作ったfeature/search のような
よく ある間違い
- 「ブランチは
ファイルの コピー」と言う ブランチは コミットを 指す名札です。 作っても、 ファイルが 倍に なるわけでは ありません - 1 つの
ブランチに 何日分もの 作業を詰め込む差分が 大きいと レビューが 進まず、 main とのずれも 広がって コンフリクトが 起きやすくなります - 「個人開発なので
ブランチは 使っていない」で終わる 1 人でも、 試しの 作業を main から 分けておけば、 うまく いかなかった ときに 捨てるだけで済みます
深掘りの問い
- 「ブランチの
名前は どう 付けていますか」 何の 作業かが 名前で 分かるように 付ける、と 答えます。 チームに 決まりが あれば それに 合わせる、 とも添えます - 「作業中に main が
先に 進んだら、 どうしますか」 main の 変更を 自分の ブランチへ 取り込み、 手元で 動きを 確かめてから プルリクエストを 出す、と答えます - 「取り込み終わった
ブランチは どうしますか」消して 一覧を 見やすく 保つ、と 答えます。 履歴は main に 残っているので、 消しても 作業は 失われません