4. ブランチで作業を分ける
ここまでは履歴が1本の線でした。 この章で線が枝分かれします。
4-1 なぜブランチが必要か
Section titled “4-1 なぜブランチが必要か”姿勢制御のコードが、いま動いているとします。 これを大幅に作り替えたいのですが、作業には数日かかり、そのあいだ手元は壊れた状態になります。 その途中の状態を、チームの共有リポジトリに置きたくはありません。 かといって、作業が終わるまで他の修正を止めるわけにもいきません。
完成するまで本番と切り離して作業したい、という要求に応えるのがブランチです。
理由はもう1つあります。 3人が同じファイルを同時に直せば、当然ぶつかります。 最初から別々の場所で作業して、完成したものを後でまとめるほうが安全です。
4-2 ブランチとは何か
Section titled “4-2 ブランチとは何か”ブランチは履歴の枝です。
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 の左下のステータスバーにあるブランチ名(
main)をクリックします - 「新しいブランチの作成」を選びます
- ブランチ名に
add-hobbyと入力します - 左下の表示が
add-hobbyに変わったことを確認します
ブランチ名は半角英数とハイフンで、何をする枝かが分かるように付けます。
add-hobby や fix-typo のような形です。
test や branch1 のような名前は、1週間後の自分にも他の人にも何の枝か分かりません。
4-4 やってみよう:切り替えを体験する
Section titled “4-4 やってみよう:切り替えを体験する”この節の操作は飛ばさないでください。 ブランチの働きは、読むより見たほうが早く分かります。
add-hobbyブランチでprofile.mdに「趣味」の項目を追記し、ステージしてコミットします- 左下から
mainに切り替えます profile.mdを開きます。さっき書いた趣味が消えていますadd-hobbyに戻ります。趣味が戻ってきます
main を選んでいるとき |
add-hobby を選んでいるとき |
|---|---|
| 名前 | 名前 |
| 所属 | 所属 |
| 好きな天体 | 好きな天体 |
| 趣味 |
4-5 やってみよう:マージする
Section titled “4-5 やってみよう:マージする”mainに切り替えます- コマンドパレット(
Ctrl+Shift+P)から「Git: ブランチをマージ」を選び、add-hobbyを選びます profile.mdに趣味が入っています- 「変更の同期」で 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
枝で作った変更が幹に入り、枝と幹が同じ内容になりました。
4-6 使い終わったブランチ
Section titled “4-6 使い終わったブランチ”マージ済みの枝は削除してかまいません。
コミットは main に取り込まれているので、履歴が消えることはありません。
放置すると枝が増え続けて、どれが作業中でどれが終わったのか分からなくなります。
削除の操作は、次の章で GitHub がボタンで案内してくれます。
4-7 つまずきポイント
Section titled “4-7 つまずきポイント”| 症状 | 原因 | 対処 |
|---|---|---|
| ファイルが消えた | ブランチを切り替えた | 元のブランチに戻れば復活する(4-4) |
| ブランチを切り替えられない | 未コミットの変更がある | コミットする。捨ててよいなら変更を破棄する |
main で作業してしまった |
ブランチを作る前に編集した | コミット前なら、そこでブランチを作れば変更を持っていける |
| push しろと言われる | 新しいブランチはまだ GitHub にない | 「Branch の発行」を押す |
4-8 GUI と CLI の対応表
Section titled “4-8 GUI と CLI の対応表”| VS Code の操作 | コマンド |
|---|---|
| 新しいブランチの作成 | git switch -c <ブランチ名> |
| ブランチの切り替え | git switch <ブランチ名> |
| ブランチ一覧 | git branch |
| Git: ブランチをマージ | git merge <ブランチ名> |
| ブランチの削除 | git branch -d <ブランチ名> |