「デザインを大きく作りかえたい。でも今の見た目も残しておきたい」——このときに使うのがブランチです。作業の流れを枝分かれさせて、元の状態をこわさずに試せます。
ブランチは「作業の枝」
いま作業している枝には、たいていmainという名前がついています。ここから枝を分けると、こうなります。
main ●──●──● ← いつでも動く状態を保つ
└──●──● ← 新デザインを試す枝枝の中で何をしてもmain側は無傷です。うまくいったら合流させ、失敗したら枝ごと捨てられます。
枝を作って移る
作ると同時にその枝へ移るには、-c(create=作る)を付けます。
git switch -c new-designこれでnew-designという枝ができ、いまそこにいる状態になりました。確かめてみます。
git branch* new-design
main*が付いているのがいま自分がいる枝です。この状態でファイルを編集してコミットすると、記録はnew-design側にだけ積まれます。
元の枝に戻るときは-cなしです。
git switch main戻ったとたん、エディタのファイルの中身も元の状態に切り替わります。はじめて見ると驚きますが、これが正しい動きです。枝を移ると、Gitがフォルダの中身をその枝の状態に入れかえてくれます。
合流させる:git merge
枝での作業が固まったら、mainに合流させます。合流させたい側(main)に移ってから実行するのがポイントです。
git switch main
git merge new-designこれでnew-designでの変更がmainに取りこまれました。役目を終えた枝は削除できます。
git branch -d new-designコンフリクト(衝突)が起きたら
mainと枝の同じ行を両方で変えていると、Gitは「どちらを残すか決められない」と言ってきます。これがコンフリクトです。
該当のファイルを開くと、こんな目印が書きこまれています。
<<<<<<< HEAD
<h1>しまちゃんのページ</h1>
=======
<h1>しまちゃんの自己紹介</h1>
>>>>>>> new-design<<<<<<< HEADから=======まで——いまの枝(main)の内容=======から>>>>>>>まで——合流させようとしている枝の内容
やることは単純です。残したい形に手で書き直して、目印の3行を消す。
<h1>しまちゃんの自己紹介</h1>あとは、いつもどおり記録すれば解決です。
git add index.html
git commit -m "見出しの文言を統合"GitHubで合流させる:プルリクエスト
チームで開発するときは、枝を手元で合流させず、GitHubに枝ごとpushしてプルリクエスト(合流の申請)を出します。
git push -u origin new-designpushするとGitHubの画面に「Compare & pull request」というボタンが出ます。押して申請を作ると、変更内容を1行ずつ見比べながら他の人に確認してもらえるようになります。承認されたら、GitHubの画面上のボタンでmainに合流します。
ひとりで作っていても、プルリクエストを使うと「自分の変更を見返す機会」になるので、練習しておく価値はあります。
いつブランチを使う?
- 大きな作りかえを試すとき——失敗しても
mainは無傷 - 人と分担するとき——同じファイルを同時に触っても、後で合流できる
- ひとりの小さな修正——枝を作らず
mainで作業しても構いません
まずは「大きく変えるときだけ枝を作る」くらいの気持ちで十分です。
このレッスンのまとめ
- ブランチは作業の枝分かれ。
git switch -c 名前で作って移り、git switch mainで戻る - 合流は、合流先に移ってから
git merge 枝の名前 - コンフリクトは質問。目印の間を残したい形に書き直してaddとcommitで終わり