なぜ直接 main を変えてはいけないのか
本流の main は「いつでも公開できる完成品の棚」です。作りかけの変更を直接置くと、その瞬間から全員が作りかけを土台に仕事をすることになります。だから作業は必ず枝の上で進め、完成してから棚に納めます。
各ブロックや矢印をクリックすると、その仕組みの説明がここに表示されます。
この図をテキストで読む
構成図「枝が分かれているから、並行しても混ざらない」。ブロック3個、つながり2本。 【ブロック】 - main(本流): いつでも公開できる棚 - feat/新機能: あなたの枝 - fix/誤字修正: 同僚の枝 【図の符号】赤紫の枠=データの置き場 【流れ】 - あなたの作業: main(本流) → feat/新機能 - 同僚の作業: main(本流) → fix/誤字修正
合流はどう起きて、何がぶつかるのか
マージは 2 本の枝の変更を突き合わせて 1 つに束ねる操作です。Git は行単位で照合し、別々の場所の変更なら黙って束ねてくれます。人の出番が要るのは、変更が同じ箇所で重なったときだけです。
各ブロックや矢印をクリックすると、その仕組みの説明がここに表示されます。
ほとんどの合流は自動 — Git が行単位で束ねてくれる
この図をテキストで読む
構成図「合流のほとんどは自動で済む」。ブロック4個、つながり2本。 【ブロック】 - 別ファイル・別の行を変更: ふつうはこちら - Git が自動で束ねる: 人の出番なし - 同じ箇所を 2 人が変更: たまに起きる - コンフリクト — 人が選ぶ: 両方見比べて決める 【図の符号】赤紫の淡い塗り=注意・課題 / 緑の淡い塗り=効果・良い点 【流れ】 - 自動で済む合流: 別ファイル・別の行を変更 → Git が自動で束ねる - 人が選ぶ合流: 同じ箇所を 2 人が変更 → コンフリクト — 人が選ぶ
コンフリクトが怖くなくなる習慣
枝を長生きさせないこと、こまめに main の最新を取り込むこと ── この 2 つでコンフリクトはぐっと減ります。起きても慌てず、両方の変更を見比べて「どちらを残すか」を選ぶだけです。分からなければ、変更した本人同士で 1 分話せば決まります。
押さえておきたい用語
- main(本流)
- ブランチを切る
- マージ(merge)
- コンフリクト
- switch(切り替え)