ブランチ
元のノートはそのままに、その時点から枝分かれさせたコピーへ思いきり書き込んでいく方法です。
定義 コードを管理するプログラムであるGitで、もとの幹から分かれて伸びた作業の枝を指します。それまでに積み上がった記録をそっくり受け継いだ地点から、新しい作業をつなげていきます。もとの幹は手をつけないまま残っているので、うまくいかなければいつでも戻ってこられます。
元のノートを置いて、コピーに書いてみる方法
クラスのみんなで文集を作るところを想像してみましょう。一冊のノートに、全員で文章を書き込んでいます。ところが、新しい話を試しに書いてみたくなりました。
元のノートに直接書いてしまうと、気に入らなかったときに困ります。消して書き直した跡が残り、前の文章まで汚れてしまうからです。そこで、ここまで書いたページをそのままコピーして新しいノートを作り、そちらに思いきり書いてみます。
Gitでは、このコピーをブランチと呼びます。作られた瞬間は元のノートと中身がまったく同じですが、そのあとに書く文章は、このコピーにだけ積み重なっていきます。元のノートは手をつけないまま、そこに残り続けるのです。
元のノート役をしている幹も、じつはブランチのひとつです。ふつうはメインブランチと呼び、みんながこの幹を完成版とみなして作業します。
みんなで書いて、書き上がったら移し替えます
文集をひとりで作ることはありませんよね。何人もの友だちがそれぞれコピーを手にして、別々の章を書いていきます。隣の人が何を書こうと、自分のコピーは揺らぎません。
ひとりが自分の章を書き終えたら、その文章を元のノートへ移し替えます。Gitでは、こうして枝の作業をもとの幹へ合わせることをマージと呼びます。この時点から、その文章はみんなの完成版に入ります。
困るのは、二人が同じページをそれぞれ違うように直してきたときです。片方は文を足し、もう片方はまるごと消していたとしたら、どちらを残すかは人が選んであげなければなりません。こうして手が必要になる状況を、コンフリクト(衝突)と言います。
ですから、コピーを長く寝かせすぎると、合わせるときに苦労します。そのあいだに元のノートが大きく変わってしまうからです。小さく枝分かれさせて、こまめに合わせるほうが、ずっと楽なのです。
もう少し正確に言うと
Gitは、じつはノートをまるごとコピーしているわけではありません。ブランチは「この幹のいちばん先はここ」と教えてくれる、一枚の名札に近いものです。文章が一ページ増えるたびに、名札がそのページへ移っていくだけなのです。
ですから、ブランチを作るのにかかる時間はほとんどありません。新しい名札を一枚つけるだけの作業だからです。一日に何本も作っては、いらなくなったら消してしまう、というのもよくあることです。
名前をまぎらわしく感じる、すぐ隣のものもあります。コミットは、そのつど保存しておいたノートの一ページです。ブランチは、そのページがつながった幹につけた名前のほうですね。
ですからブランチを、まったく別の世界のように考える必要はありません。元の場所へ戻ってこられる目印を置いたうえで、そこから枝分かれして気楽に手を入れてみる方法、と考えるほうが近いのです。
🤔 よくある誤解
ブランチを作ると、プロジェクトのフォルダ全体がコピーされ、その分だけ保存容量を余計に使う。
ブランチは幹の先端を指す名札のようなものです。新しく作るときにファイルがまるごとコピーされるわけではないので、作ったり消したりする負担はとても小さいのです。
ブランチで作業すると、もとの幹のコードも一緒に変わってしまう。
枝分かれしたあとに積み上げた作業は、その枝にだけ残ります。もとの幹に反映するには、マージという段階を別に踏む必要があります。
🧺 日常で出会う場面
これまでの記録を受け継いで枝分かれした作業の枝なので、もとのコードに触れないまま新しい作業を試してみることができます。