Skip to content

4. ブランチで作業を分ける

ここまでは履歴が1本の線でした。 この章で線が枝分かれします。

姿勢制御のコードが、いま動いているとします。 これを大幅に作り替えたいのですが、作業には数日かかり、そのあいだ手元は壊れた状態になります。 その途中の状態を、チームの共有リポジトリに置きたくはありません。 かといって、作業が終わるまで他の修正を止めるわけにもいきません。

完成するまで本番と切り離して作業したい、という要求に応えるのがブランチです。

理由はもう1つあります。 3人が同じファイルを同時に直せば、当然ぶつかります。 最初から別々の場所で作業して、完成したものを後でまとめるほうが安全です。

ブランチは履歴の枝です。 main という幹があり、そこから枝を生やして、枝の上でコミットします。

%%{init: {'themeVariables': {'git0': '#3b82f6', 'git1': '#22c55e', 'gitBranchLabel0': '#ffffff', 'gitBranchLabel1': '#ffffff'}}}%%
gitGraph
  commit id: "自己紹介"
  commit id: "好きな天体"
  branch add-hobby
  checkout add-hobby
  commit id: "趣味"

丸1つがコミットで、左から右へ時間が流れます。 青が main、緑が add-hobby です。 「趣味」のコミットは緑の線の上にあるので、main の側からは見えません。

枝の上でいくらコミットしても、幹には影響しません。 完成したら幹に合流させます。この操作をマージと呼びます。

用語 意味
main 既定の幹。これが正式版という位置づけ
ブランチを切る 新しい枝を作る
切り替え(チェックアウト) 作業する枝を移動する
マージ 枝を幹に合流させる
HEAD いまどの枝のどこにいるかを指す矢印

4-3 やってみよう:ブランチを作る

Section titled “4-3 やってみよう:ブランチを作る”
VS Code の左下のステータスバーに出るブランチ名と、それをクリックすると開くクイックピック。新しいブランチの作成という項目と、切り替え先のブランチ一覧が並んでいる模式図
  1. VS Code の左下のステータスバーにあるブランチ名(main)をクリックします
  2. 「新しいブランチの作成」を選びます
  3. ブランチ名に add-hobby と入力します
  4. 左下の表示が add-hobby に変わったことを確認します

ブランチ名は半角英数とハイフンで、何をする枝かが分かるように付けます。 add-hobby や fix-typo のような形です。 test や branch1 のような名前は、1週間後の自分にも他の人にも何の枝か分かりません。

4-4 やってみよう:切り替えを体験する

Section titled “4-4 やってみよう:切り替えを体験する”

この節の操作は飛ばさないでください。 ブランチの働きは、読むより見たほうが早く分かります。

  1. add-hobby ブランチで profile.md に「趣味」の項目を追記し、ステージしてコミットします
  2. 左下から main に切り替えます
  3. profile.md を開きます。さっき書いた趣味が消えています
  4. add-hobby に戻ります。趣味が戻ってきます
main を選んでいるとき add-hobby を選んでいるとき
名前 名前
所属 所属
好きな天体 好きな天体
趣味
  1. main に切り替えます
  2. コマンドパレット(Ctrl + Shift + P)から「Git: ブランチをマージ」を選び、add-hobby を選びます
  3. profile.md に趣味が入っています
  4. 「変更の同期」で GitHub へ送ります
%%{init: {'themeVariables': {'git0': '#3b82f6', 'git1': '#22c55e', 'gitBranchLabel0': '#ffffff', 'gitBranchLabel1': '#ffffff'}}}%%
gitGraph
  commit id: "自己紹介"
  commit id: "好きな天体"
  branch add-hobby
  checkout add-hobby
  commit id: "趣味"
  checkout main
  merge add-hobby

枝で作った変更が幹に入り、枝と幹が同じ内容になりました。

マージ済みの枝は削除してかまいません。 コミットは main に取り込まれているので、履歴が消えることはありません。 放置すると枝が増え続けて、どれが作業中でどれが終わったのか分からなくなります。

削除の操作は、次の章で GitHub がボタンで案内してくれます。

症状 原因 対処
ファイルが消えた ブランチを切り替えた 元のブランチに戻れば復活する(4-4)
ブランチを切り替えられない 未コミットの変更がある コミットする。捨ててよいなら変更を破棄する
main で作業してしまった ブランチを作る前に編集した コミット前なら、そこでブランチを作れば変更を持っていける
push しろと言われる 新しいブランチはまだ GitHub にない 「Branch の発行」を押す
VS Code の操作 コマンド
新しいブランチの作成 git switch -c <ブランチ名>
ブランチの切り替え git switch <ブランチ名>
ブランチ一覧 git branch
Git: ブランチをマージ git merge <ブランチ名>
ブランチの削除 git branch -d <ブランチ名>