CHAPTER 2 · 1 lesson · 13問

branch と merge

branch を作成して並行作業し、作業が終わったら merge する。conflict(競合)の解消まで。

0 / 13 問クリア

いま動いている安定版に、新しい機能を追加したい。でも失敗したら元に戻せるようにしておきたい。

ファイルを丸ごとコピーして別名保存する方法もあるけれど、あとからどこを変えたのか分からなくなるし、合体させるのも手作業で大変だよね。

Git には、そのための強力な仕組みが最初から入っているよ。それが branch だよ。

  • git branch … branch の一覧を表示する、新しく branch を作成する
  • git switch … branch を切り替える(-c で作成してそのまま切り替える)
  • git merge … 別の branch の変更を現在の branch に merge する

この章の山場は conflict(競合) だよ。同じファイルの同じ行を両方の branch で違うふうに変更していると、Git は自動で merge できず一時停止する。

ここで覚えておいてほしいのは、conflict は壊れたのではないということ。「どちらの変更を残すか、Git には判断できません」と言われているだけだよ。コードを読んで正解を決められるのは人間だけなので、Git はあなたの指示を待っている。

そして、離れた行の変更は自動で統合できることが多い。ただし、近くの行の変更や、片方でファイルを消してもう片方で編集した場合なども conflict になることがある。Git はファイル単位ではなく行単位で見ているからだよ。「同じファイルを触ったら必ず conflict する」というのは、初学者がいちばん陥りやすい誤解だよ。

履歴のグラフを見ながら進めてね。branch が分かれて、また1本に merge される形が目で見えると、merge が何をしたのかを直感的に理解できるよ。

この章のレッスン

branch の作成と merge

  1. 02branch の作成と mergebranch を分岐させて作業を進め、作業完了後に main へ merge する。conflict 発生時の解消手順まで学ぼう。問題へ

つぎは「remote リポジトリとの共有」。remote リポジトリ(origin)へ push し、最新の commit を pull して同期する。