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