ブランチとは何か、なぜ必要なのか
Gitのブランチは独立した開発ラインです。技術的には、ブランチは特定のコミットへのポインタにすぎません。これにより、ブランチの作成は非常に高速で軽量なプロセスになります。
ブランチの主な使用シナリオ:
メインコードから独立した新機能の開発
現在の開発に影響を与えることなくバグを修正
何かを壊すリスクなしにコードを実験する
複数の開発者が異なるタスクに並行して取り組む

ブランチの基本操作
新しいブランチを作成する
ブランチは次のコマンドで作成できます。
git branch feature-authこのコマンドは新しいブランチを作成しますが、そのブランチに切り替えることはありません。ブランチを作成してすぐに切り替えるには、次を使用します。
git checkout -b feature-authまたは、より現代的な構文では、
git switch -c feature-authブランチ間の切り替え
既存のブランチに切り替えるには、次を使用します。
git checkout mainまたは
git switch maingit switchコマンドはGit 2.23で登場し、ブランチを切り替えて構文をよりわかりやすくするために特別に作成されました。git checkout は多くの異なる操作を実行するため、時には混乱することがあります。
ブランチリストを表示
すべてのローカルブランチを表示するには:
git branch現在のスレッドにはアスタリスクが付いています。削除されたものを含むすべてのブランチを表示するには:
git branch -a追加情報を含むブランチを表示するための便利なコマンド:
git branch -v各ブランチの最後のコミットが表示されます。
ブランチのマージ
別のブランチで関数の作業が完了したら、メインブランチに戻す必要があります。これを行うには、git mergeコマンドを使用します。
Fast-forward merge
最も簡単なケースは、機能ブランチを作成した後にメインブランチに新しいコミットがない場合です。
git checkout main
git merge feature-authこの場合、Gitは単にmainブランチポインタを前方に移動します。これは早送りマージと呼ばれます。
Three-way merge
機能ブランチを作成した後にメインブランチに新しいコミットが追加された場合、Gitは両方のブランチの変更を結合するマージコミットを作成します。
git checkout main
git merge feature-user-profileGit は、「Merge branch 'feature-user-profile'」のようなメッセージでマージコミットを自動的に作成します。

対立の解決
ファイル内の同じ行が異なるブランチで変更された場合、競合が発生します。Gitはどの変更を残すかを自動的に決定できず、あなたに助けを求めます。
競合が発生した場合、Gitはファイル内の問題のある領域をマークします。
<<<<<<< HEAD
const apiUrl = 'https://api.example.com/v1';
=======
const apiUrl = 'https://api.newdomain.com/v2';
>>>>>>> feature-api-update<<<<<<< HEADと=======の間のブロックには現在のブランチからの変更が含まれており、=======と>>>>>>> feature-api-updateの間のブロックにはマージされたブランチからの変更が含まれています。
競合を解決するには:
ファイルを開き、競合マーカーを削除して必要な変更を選択します
ファイルを保存する
ステージングエリアにファイルを追加します:
git add filename.jsマージを完了します。
git commit
多くの IDE とコードエディターには、ビジュアルな競合解決ツールが組み込まれているため、プロセスが大幅に簡素化されます。
リベース:マージの代替
マージに加えて、変更を統合する別の方法があります。リベース。コミットの履歴を書き換えて、ブランチを別のブランチの上位に移動します。
git checkout feature-payment
git rebase mainこのコマンドは、feature-paymentからすべてのコミットを取得し、mainの最後のコミットの上にそれらを適用します。
マージとリベースの違い
マージは完全な履歴を保持し、追加のマージコミットを作成します。履歴は非線形ですが、実際の開発プロセスを反映しています。
Rebaseは、コミットを書き換えることによって線形の履歴を作成します。これにより、履歴がよりクリーンで理解しやすくなりますが、ブランチが並行して存在した正確なタイミングに関する情報は失われます。
重要なルール: 他の開発者が作業している公開ブランチをリベースしないでください。これにより履歴が上書きされ、チーム全体に問題が発生します。
ブランチを使用するための戦略
Git Flow
Vincent Driessenが提案した人気のブランチモデル。メインブランチ:
main— 安定したプロダクションコードdevelop—開発のための統合ブランチfeature/*— 新機能のブランチrelease/*— リリース準備hotfix/*— 本番環境の緊急修正
GitHub Flow
継続的デリバリーチームで人気のシンプルなモデル:
main— いつでもデプロイ可能機能ブランチはメインブランチから作成されます
レビュー後、変更はプルリクエストを介してメインに戻されます
デプロイはマージの直後に行われます
Trunk-Based Development
ミニマリストなアプローチ:
1つのメインブランチ(trunk/main)
開発者は直接メインブランチにコミットするか、短命のブランチを作成します
フィーチャーフラグは、未完了の機能を非表示にするために使用されます
高い規律と優れた自動テストが必要
実用的なアドバイス
ブランチの名前を付ける
わかりやすく構造化された名前を使用してください。
feature/user-authentication
bugfix/login-redirect
hotfix/payment-gateway
refactor/api-endpointsメインブランチとの定期的な同期
長時間機能ブランチで作業している場合は、定期的にメインブランチから変更を取得してください。
git checkout feature-dashboard
git merge mainこれにより、最終的な統合の際に大きな衝突を避けることができます。
ブランチを削除
ブランチをマージした後、次のように削除できます。
git branch -d feature-authマージされていないブランチを強制的に削除するには:
git branch -D experimental-featureリモートブランチの削除:
git push origin --delete feature-authブランチ履歴を表示する
ブランチを使用したコミット履歴の可視化:
git log --oneline --graph --allこのコマンドは、すべてのブランチをコンパクトな形式で含むコミットツリーを表示します。
リモートブランチの操作
ローカルブランチをサーバーに送信する
git push -u origin feature-apiフラグ -u は、ローカルブランチとリモートブランチ間のリンクを設定します。
リモートブランチを取得する
サーバーから新しいブランチを表示するには:
git fetch originリモートブランチに基づいてローカルブランチを作成します。
git checkout -b feature-api origin/feature-apiまたは、簡単に言うと:
git checkout --track origin/feature-api結論
Gitのブランチは、プロジェクトの並行作業を整理するための強力なツールです。新機能の開発を分離し、コードを安全に試行し、チームで効率的に作業することができます。ブランチ、マージ、競合の解決の基本を理解することは、現代の開発者にとって必要なスキルです。
シンプルに始めましょう。新しいタスクごとに個別のブランチを作成し、定期的に変更をコミットし、完成した機能をメインブランチに戻します。経験を積むにつれて、自分とチームに最適なワークフローが見つかります。
アプリケーション コディック 初心者向けの構造化プログラミングコースを提供しています。トレーニングは、コードの記述をすばやく開始するのに役立つ実例と実際のタスクに基づいています。
私たちの Telegramチャンネル、ここでは定期的に役立つ記事や複雑なトピックの分析を公開し、初心者プログラマーの質問に答えています。一緒に学ぶ方が簡単で効率的です!
