{}const=>[]async()letfn</>var
開発

Gitのブランチ:競合なしで並行して作業する

開発者向けのGitブランチの完全ガイド。ブランチの作成、ブランチ間の切り替え、変更のマージ、競合の解決方法について説明します。マージとリベースの違い、人気のブランチ戦略(Git Flow、GitHub Flow)、チーム開発のベストプラクティスを分析します。

К

Kodik

著者

1分で読める

ブランチとは何か、なぜ必要なのか

Gitのブランチは独立した開発ラインです。技術的には、ブランチは特定のコミットへのポインタにすぎません。これにより、ブランチの作成は非常に高速で軽量なプロセスになります。

ブランチの主な使用シナリオ:

  • メインコードから独立した新機能の開発

  • 現在の開発に影響を与えることなくバグを修正

  • 何かを壊すリスクなしにコードを実験する

  • 複数の開発者が異なるタスクに並行して取り組む

🔥 10万人以上の学生が参加中

理論を読むのに疲れた?
コーディングの時間だ!

Kodik — 実践でプログラミングを学ぶアプリ。AIメンター、インタラクティブなレッスン、実際のプロジェクト。

🤖 AI 24時間
🎓 修了証
💰 無料
🚀 始める
今日参加

ブランチの基本操作

新しいブランチを作成する

ブランチは次のコマンドで作成できます。

git branch feature-auth

このコマンドは新しいブランチを作成しますが、そのブランチに切り替えることはありません。ブランチを作成してすぐに切り替えるには、次を使用します。

git checkout -b feature-auth

または、より現代的な構文では、

git switch -c feature-auth

ブランチ間の切り替え

既存のブランチに切り替えるには、次を使用します。

git checkout main

または

git switch main

git 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-profile

Git は、「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の間のブロックにはマージされたブランチからの変更が含まれています。

競合を解決するには:

  1. ファイルを開き、競合マーカーを削除して必要な変更を選択します

  2. ファイルを保存する

  3. ステージングエリアにファイルを追加します: git add filename.js

  4. マージを完了します。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チャンネル、ここでは定期的に役立つ記事や複雑なトピックの分析を公開し、初心者プログラマーの質問に答えています。一緒に学ぶ方が簡単で効率的です!

🎯先延ばしをやめよう

記事は気に入った?
実践の時間だ!

Kodikでは読むだけでなく、すぐにコードを書く。理論 + 実践 = 本当のスキル。

即座に実践
🧠AIがコードを説明
🏆修了証

登録不要 • カード不要