Git branchとは?
branchはcommitへの移動可能なポインタで、mainのコードに影響を与えずに作業できる独立した開発ラインを提供します。
branchは、チームが互いに邪魔をせずに多くのことを同時に進める手段です。branchはcommitへの名前付きポインタにすぎず、作成のコストはほぼゼロです。branchを切り、機能や修正を作り、準備が整い検証されたらmergeし戻します。
branchの実体
branchは、commitへの軽量で移動可能な参照にすぎません。branch上でcommitすると、branchポインタが新しいcommitへ進みます。ポインタが非常に安価なため、branchの作成と削除は瞬時に行え、頻繁で独立した作業を後押しします。
branch上での作業
branchを作成し、そこへ切り替え、commitを行い、後でmainのラインへmergeし戻します。
Branch, commit, merge
git switch -c feature/login
git commit -am "Add login page"
git switch main
git merge feature/loginなぜbranchが重要か
branchは、複数の開発者と機能が並行して進むことを可能にします。mainのbranchは既知の良好な状態を保ち、リスクのある未完成の作業は別の場所に置かれます。この分離はpull requestワークフローの基礎であり、そこではbranchがmergeされる前にレビューとtestを受けます。
CI/CDにおけるbranch
CIは通常、すべてのbranchのpushとすべてのpull requestで実行されるため、各branchはmergeされる前に独自のbuildとtestの結果を得ます。pipelineはしばしばbranchごとに異なる動作をします。たとえばmainのbranchをproductionにdeployし、feature branchではtestのみを実行するといった具合です。branchパターンのようなフィルターで、どのworkflowをどこで実行するかを絞り込めます。
よくあるbranchの落とし穴
- 長命なbranchはmainから大きく乖離し、つらいmergeを生みます。
- mergeされたbranchの削除を忘れるとリポジトリが散らかります。
- すべてのbranchで高コストなpipelineを実行するとCIの分を浪費しかねません。
- 未レビューのmainへのmergeを防ぐにはbranch protectionが必要です。
重要なポイント
- branchは、commitへの安価で移動可能なポインタです。
- branchはmainを安定に保ちながら並行作業を可能にします。
- CIはbranchごと、pull requestごとに実行され、しばしばbranch固有の動作をします。
関連ガイド
What Is a Git Merge?What is a Git merge? An explainer on how merging combines branches, fast-forward versus merge commits, confli…
What Is a Feature Branch?What is a feature branch? Learn how an isolated branch holds work on one feature until it is reviewed and tes…
What Is a Pull Request?What is a pull request? An explainer on how PRs propose changes, gather review, run CI checks, and serve as t…