ソースコード管理にGitを使用している場合、プロジェクトのさまざまな開発ブランチを単一のブランチにマージする必要があるかもしれません。この記事では、Gitマージコマンドを使用して2つの開発ブランチを結合する方法を説明します。
Gitプロジェクトの作成方法、異なるブランチの作成方法、および片方のブランチをもう片方のブランチに統合する方法を示します。さらに、高速マージと3ウェイマージについて学び、ブランチをリモートリポジトリにマージする方法も説明します。
Gitマージとは?
Gitは、開発者が異なるチームによって書かれたコードの変更を追跡および管理するために使用できる人気のDevOpsツールです。Gitマージコマンドを使用すると、現在の開発ブランチ(メインブランチからフォークしたもの)を取り、そのコード変更をメインブランチにマージすることができます。
Gitマージは、チームで作業しているときに最もよく使用するコマンドです。別々のブランチで同じ機能に協力するかもしれませんが、作業を1つのブランチに統合し、それらの変更をテストし、その後共同開発をメイン開発ブランチにマージする必要があります。
メイン開発ブランチが更新されている間は、あなたや他の開発者が作業している別々のフィーチャーブランチは、チームの変更と更新されません。したがって、プルリクエストを送信する時には、常に最新の変更を取り込むためにローカルのメインブランチを更新することから始めるべきです。その後、更新されたメインブランチを開発ブランチにマージしてコミットし、メイン開発ブランチにマージするためのプルリクエストを送信することができます。
Gitマージで2つのGitブランチを結合する方法
開発者として、Gitを熟知することは生産性を向上させるのに本当に役立ちます。まず、基本的なこととして、コマンドラインからGitコマンドを実行する方法を理解することが重要です。始める前に、異なるGitブランチをマージする前に最初に設定する必要があることを見てみましょう。
前提条件
始めるためには、以下のアイテムが必要です:
- A Windows, Mac, or Linux machine to run Git.
- こちらからダウンロードできるGitアプリ。
- A GitHub or Gitlab account.
- Visual Studio Codeなどのコード編集ソフトウェア。
Windows PCにGitをインストールするためのさまざまな手順を素早く確認しましょう(UbuntuにGitをインストールする方法については別のガイドもあります):
- マシン用のGitをダウンロードしてファイルをインストールするためのリンクに移動します。
- インストールが完了したら、ターミナルを開いてgit –versionと入力します。
git –version
バージョン番号が返されたら、素晴らしいです!しかし、「コマンドが見つかりません」というメッセージが表示された場合は、Gitを$PATH変数に追加する必要があるかもしれません。これは通常、Windowsの問題です。
そうならないように素早く対処しましょう。
- スタートバーに移動して、このPCを右クリックします。
- プロパティを選択します。
- 高度なシステム設定をクリックします。
- システムのプロパティで、環境変数をクリックします。ここで、$PATH変数に値を追加できます。
- $PATHを選択して編集をクリックします。
- 新規作成をクリックして、git/cmdへのパスを追加します。
- 新規作成をクリックして、git.exeファイルへのパスを追加します。
変更を保存し、ターミナルに戻ってgit -versionコマンドを再度実行します。
git -version
バージョン番号が返されるはずです。事前作業を行い、GitHubまたはGitlabアカウントを設定したら、準備が整っているはずです。
Gitプロジェクトの作成
このセクションでは、新しいリポジトリを作成するために必要な異なるステップを解説します。
新しく作成したGithubアカウントで、画面左側の新規作成をクリックします。

次に、リポジトリに名前を付け、その他の詳細を入力する必要があります。短い説明を追加したい場合は追加し、公開にし、ReadMeファイルを常に追加するのがベストプラクティスです。完了したら、リポジトリを作成をクリックします。

さて、コードエディタで作業を開始するには、新しいリポジトリをクローンする必要があります。クローンボタンをクリックして、HTTPSを選択し、アドレスをコピーしてターミナルを開きます。

ターミナルで、プロジェクト用の新しいディレクトリを作成する場所を選択するためにcdコマンドを使用します。
cd user/desktop/repo/
正しいブランチにいる場合は、新しいディレクトリを作成するためにmkdirコマンドを使用してください:
mkdir <name of your directory>
さて、cdコマンドを再度使用して、新しく作成したディレクトリに切り替えてください:
cd <name of your newly created directory>
新しいディレクトリに入ったら、git initコマンドを使用して新しいリポジトリを作成してください:
git init
次に、正しいHTTPSアドレスを使用してgit cloneコマンドを使用し、Enterキーを押してください。デフォルトでは、これによりローカルリポジトリにメインブランチが作成されます。
git clone <paste https address here>
今、Visual Studio Codeで新しくクローンしたリポジトリを開いてください。これでコードの作成を開始できます。
リポジトリを作成した後は、既にメインブランチにいます。ベストプラクティスとして、コードを直接メインブランチにプッシュしないでください。これは保護される必要があるからです。
保護されたGitブランチについてはこのチュートリアルでは説明しません。しかし、実際の現場では、プルリクエストなしにメインブランチにコードをプッシュすることはできません。
別のGitブランチを作成する
現在、メインブランチにいます。何かコンテンツを作成するためのコードを書いた後、新しいブランチを作成したいと思います。
ターミナルで、git checkoutコマンドを使用して新しいブランチを作成し、自動的に切り替えます:
git checkout -b <name of new branch>
このコマンドは、新しいブランチをメインブランチから自動的に切り取るはずです。したがって、後者のコードは変更されないはずです。
ここで、楽しい部分がやってきます。git mergeコマンドを使用できるようになります。新しく作成したブランチで、現在のブランチがメインブランチよりも新しい変更を加える必要があります。
この新しいブランチをメインブランチにマージしたい場合、マージコンフリクトに遭遇するかもしれません。これは、既存のコードと競合するコードの挿入です。これに対処するのは本当に楽しいことではありません。
したがって、何をしますか?一方のブランチを他方にマージする方法を見てみましょう。
ローカルリポジトリでの2つのGitブランチのマージ
新しいブランチにいる間、ターミナルに移動し、git branchコマンドを使用しているブランチの名前を確認します:
git branch
新しいブランチに移動したら、再度git checkoutコマンドを使用してメインブランチに切り替えます:
git checkout Main
次に、git pullコマンドを使用して、チームが行った変更をインポートし、ローカルのメインブランチを最新の状態に更新します:
git pull
今度は、git checkoutを再度使用して、メインブランチとマージしたい新しいブランチに切り替えます:
git checkout <your specified branch>
そして、git mergeコマンドを使用する時間です。これにより、現在のメインブランチのバージョンが取得され、開発ブランチにマージされます:
git merge Main
マージの結果には、コードの最新バージョンと開発した機能が含まれます。
Gitブランチをマージする他の方法
新しいブランチをメインブランチとマージする方法を示した後、使用する必要があるかもしれない他のGitブランチをマージする方法を見てみましょう。
ファストフォワードマージとは何ですか?
A fast-forward merge is another way to merge multiple commits on one branch with one command rather than merging them all manually. Another advantage of using a fast-forward merge is that it will combine the histories of multiple commits while squashing the commit history.
メインブランチよりも複数のコミット進んだ機能ブランチがあると仮定しましょう。これらのすべてのコミットを1つずつ手動でマージせずにマージしたい場合、ファストフォワードマージを使用します。
この例では、いくつかのコードを書いて新しいコミットをブランチに追加するとします。 git add と git commit コマンドを使用します:
git add <filename>
git commit –m “added a thing”
次に、同じコマンドを再度使用して新しいブランチに別のコミットを追加します:
git add <filename>
git commit –m “added another thing”
その後、これらの2つのコミットを2回プッシュせずにリモートリポジトリにプッシュしたい場合、gitマージコマンドで-ffを使用する必要があります
git merge --ff
これにより、両方のコミットが同時に1つにマージされ、コードがメインブランチに追いつきます。
3ウェイマージとは何ですか?
開発チームが2つの別々のブランチで新機能を作成した場合を想像してみてください。これらのブランチを更新してメインブランチにマージし、それから後者がリモートリポジトリにコードをプッシュできるように準備します。
新機能が正しく連携して動作していることを確認するために、機能ブランチを互いにマージしてからいくつかのテストを実行するのが良いアイデアです。3ウェイマージを使用すると、2つの別々のブランチを共通の祖先で結合できます。
ターゲットブランチへの3方向マージを行うために必要な手順を見ていきましょう。以下の例では、新しいブランチを作成し、それに2つのコミットを追加し、3方向マージを使用してメインブランチに統合します。
まず、’new-feature’ブランチを作成し、git checkoutコマンドで自動的に切り替えます。このコマンドで-bを指定すると、新しいブランチが作成されます:
git checkout -b new-feature main
次に、次のコマンドでブランチにいくつかのファイルと新しいコミットを追加します:
git add <file>
git commit -m "Start a feature"
次に、新しいブランチに別のコミットを追加します:
git add <file>
git commit -m "Finish a feature"
新しいブランチに新しいコードを追加した後、メインブランチも進行し続ける状況を想定する必要があります。git checkoutコマンドで最初にメインブランチに戻ります:
git checkout main
次に、メインブランチに新しいコミットを追加します:
git add <file>
git commit -m "make some changes to Main"
そして、前に作成した’new-feature’ブランチを更新したメインブランチにマージしたいとします。メインブランチで作業が続くため、git branchコマンドで’new-feature’ブランチを削除します。
git merge new-feature
git branch -d new-feature
これで、共通の祖先を持つ2つのブランチをメインブランチにマージしました。メインブランチは今、リモートリポジトリにマージしてソフトウェアプロジェクトをさらに進展させる準備が整いました。次に、その方法を見ていきましょう。
Gitブランチをリモートリポジトリにマージする方法
時々、ブランチをリモートリポジトリにマージする必要があります。これを達成する手順について説明しましょう。
製品所有者が作成を希望する新機能のために新しいコードを書いたと想定しましょう。コードをテストし、製品所有者とレビューをした後、チームのリモートリポジトリに作業成果をマージする準備が整いました。
前述の通り、コードを直接メインブランチにプッシュすることは決してできません。このガイドの冒頭で詳細に説明したGitワークフローを常に尊重する必要があります。
Gitのプロセスを確認した後、コードをマージしましょう。前回の続きから始めますが、最新のアップデートがメインブランチにプルされ、ローカルリポジトリに反映された状態があります。
これでリモートリポジトリのゲートに立っています。どうやってそこにたどり着くのでしょうか?簡単です、さらにいくつかのgitコマンドを使用します。
ベストプラクティスとして、いつもgit statusコマンドでブランチの状態をチェックするべきです。このコマンドは、どのファイルが追加され、削除され、トラックされているか、トラックされていないかを表示します。
git status
また、トラックされていないファイルを追加していないか確認する必要があります。その場合は追加して、コミットされるようにする必要があります。
git addコマンドを使用して、開発中に作成したすべてのファイルを追加できます。特定のファイルのみを追加したい場合は、ファイル名を記述する必要があります。すべてのファイルを追加する場合は、「.」を使用してください。
次に、git commitコマンドを使用して、前のステップで追加したすべてのファイルをコミットします。メッセージを記述するには-mフラグを使用する必要があります。そうしないと、メッセージを書くためにテキストエディタモードに移行され、これは効率的なプロセスではありません。
メッセージには、行った作業について簡単なメモを記述できます。例えば、「新しいクールな機能を作成し、メニューに新しいアイコンを追加し、バグ修正を行いました」と記述できます。
git commit -m “<your commit message goes here>”
最後に、git pushコマンドを使用して、作業ブランチをリモートリポジトリにプッシュします。
git push --set-upstream origin <<your branch name>>
ブランチをプッシュした後は、GitHubやリモートリポジトリがホストされている場所に移動し、最近プッシュしたものを見つけ、プルリクエストを作成をクリックします。

このボタンをクリックすると、承認または拒否を決定するためのリビューアーやチームメンバーを追加するページに移動します。拒否された場合、リモートのメインブランチにマージする前に修正する必要がある点についてコメントを追加できます。

レビューが完了し、マージリクエストが承認されると、Mergeボタンが利用可能になります。このボタンをクリックしてマージを開始してください。マージが成功すると、新しいコードが追加されたことを確認するメッセージが表示されます。

おめでとうございます!git mergeコマンドの基本を理解しました!
結論
Git mergeは、異なるブランチを使用して新機能を開発し、それらをメインリポジトリに統合するための強力なコマンドです。
ブランチの作成、マージ、ファイルやコミットの追加、そして何よりも、それらのブランチをリモートリポジトリにプッシュする必要な手順を学びました。さらに、複数の関連するブランチを1つのコマンドで結合するためのファストフォワードマージを行う方法を理解しました。これは開発作業を効率化するのに役立ちます。
Gitは多くのことができる強力なツールです。異なるコマンドについて学べば、開発者としてより良いスキルを身につけることができます。ブランチのマージについて学んだ今、他のコマンドを学ぶ準備が整いました。Gitの使いこなしに向けてがんばってください!