Git プルマスターをブランチに
- マスターから別のブランチにGitの変更を取り込む方法
-
git merge
コマンドを使用してマスター
から別のブランチに変更を取り込む方法 -
git rebase
コマンドを使用してマスター
から別のブランチに変更を取り込む方法 -
git pull
コマンドを使用して他のブランチにmaster
の変更を取り込む - 結論
Gitツールを使用してソフトウェアを開発する際には、異なる機能ごとに異なるブランチを作成することができます。マスターの変更を加える際に、これらの変更は自動的に他のブランチに追加されません。
この記事では、Gitでマスターから別のブランチにすべての変更を取り込む方法について説明します。
マスターから別のブランチにGitの変更を取り込む方法
Gitツールを使用する際には、マスターで行った変更を別のブランチに取り込む必要がある場合があります。これらの変更は自動的に転送されないため、手動で行う必要があります。
この記事の残りの部分では、3つの異なる方法でdev
ブランチにマスターから変更を取り込む方法について説明します。
main
に名前が変更されました。git merge
コマンドを使用してマスター
から別のブランチに変更を取り込む方法
これを達成する別の方法は、git merge
コマンドを使用する方法です。
ステップ1: マスター
ブランチをチェックアウトする
まず、git checkout
コマンドを使用してマスター
ブランチに切り替えます。
git checkout master
このコマンドは、変更を取り込みたい変更元のマスター
ブランチにいることを確認します。
ステップ2: 最新の変更を取得する
マージする前に、ローカルのマスター
ブランチがリモートのマスター
ブランチと最新であることを確認することが重要です。これには、git pull
コマンドを使用します。
git pull origin master
このコマンドは、リモートのマスター
ブランチから最新の変更を取得し、ローカルのマスター
ブランチにマージします。
ステップ3: フィーチャーブランチにチェックアウトする
次に、変更を取り込むフィーチャーブランチに戻ります。git checkout
コマンドを使用し、feature-branch
を実際のフィーチャーブランチの名前に置き換えてください。
git checkout feature-branch
ステップ4: マスター
をフィーチャーブランチにマージする
フィーチャーブランチをチェックアウトしたら、git merge
コマンドを使用してマスター
ブランチから変更をフィーチャーブランチにマージすることができます。
git merge master
git merge
の詳細
git merge
コマンドは、あるブランチから別のブランチに変更を統合するために使用されます。この場合、マスター
からフィーチャーブランチに変更をマージしています。
Gitは、分岐して以来、両方のブランチに新しい変更がある場合、自動的に新しいマージコミットを作成します。競合する変更がない場合、マージはスムーズに行われます。
ステップ5: 競合の解消(必要な場合)
マージ中に競合が発生した場合、Gitは一時停止し、競合しているファイルを示します。これらのファイルを開き、競合のマーカーを見つけ、解消する方法を決定する必要があります。競合を解消したら、ファイルを保存します。
ファイルの競合を解消したら、git add
コマンドを使用して解決したことをマークします。
git add <conflicted-file>
各競合ファイルに対してこのプロセスを繰り返します。
ステップ6: マージをコミットする
すべての競合を解消し、ファイルを解決したら、意味のあるコミットメッセージとともにマージをコミットします。
git commit -m "Merge branch 'master' into feature-branch"
このコミットメッセージは、将来の参照のためにマージ操作を説明します。
ステップ7: 更新されたフィーチャーブランチをプッシュする
マスター
からの変更をフィーチャーブランチに正常にマージしたので、更新されたフィーチャーブランチをリモートリポジトリにプッシュします。
git push origin feature-branch
git rebase
コマンドを使用してマスター
から別のブランチに変更を取り込む方法
これを達成する別の方法は、git rebase
コマンドを使用する方法です。git rebase
を使用してマスター
ブランチから別のブランチに変更を取り込むプロセスを説明します。
ステップ1: マスター
ブランチをチェックアウトする
まず、git checkout
コマンドを使用してマスター
ブランチに切り替えます。
git checkout master
このコマンドは、変更を統合したい変更元のマスター
ブランチにいることを確認します。
ステップ2: 最新の変更を取得する
リベースする前に、ローカルのマスター
ブランチがリモートのマスター
ブランチと最新であることを確認することが重要です。これには、git pull
コマンドを使用します。
git pull origin master
このコマンドは、リモートのマスター
ブランチから最新の変更を取得し、ローカルのマスター
ブランチにマージします。
ステップ3: フィーチャーブランチにチェックアウトする
次に、変更を統合するフィーチャーブランチに戻ります。git checkout
コマンドを使用し、dev
を実際のフィーチャーブランチの名前に置き換えます。
git checkout dev
ステップ4: dev
をmaster
にリベースする
特徴ブランチがチェックアウトされている状態で、アップデートされた master
ブランチにリベースすることができます。この場合、git rebase
コマンドに続けて、リベースしたいブランチ名である master
を使用します。
git rebase master
Gitは自動的に特徴ブランチのコミットを master
ブランチの上に適用します。このプロセス中に、自分の変更と master
の変更との間に競合がある場合、Gitはリベースを一時停止し、これらの競合を手動で解決するように求めます。
git rebase
コマンドは、コミット履歴を書き換えるための強力なツールです。
この文脈で git rebase master
を実行すると、Gitは特徴ブランチのコミット履歴全体(master
から分岐した地点から始まる)を取得し、それぞれのコミットを現在の master
ブランチの上に再適用します。
これにより、特徴ブランチが現在の master
ブランチの先頭に移動し、まるで現在の master
ブランチの状態から作成したかのようになります。
git merge
ではなく git rebase
を使用する利点の一つは、線形のコミット履歴が得られるため、理解とナビゲーションが容易になることです。
ただし、コミット履歴を書き換えるため、特に共同作業環境では慎重に使用する必要があります。
ステップ5: 競合の解消(あれば)
リベース中に競合が発生した場合、Gitは一時停止し、どのファイルに競合があるかを表示します。これらのファイルを開き、競合マーカーを見つけ、解決方法を決定する必要があります。競合を解決したら、ファイルを保存します。
ファイル内のすべての競合を解決したら、次のコマンドを使用して解決済みとマークします。
git add <conflicted-file>
各ファイルに競合がある場合は、このプロセスを繰り返します。
ステップ6: リベースの継続
すべての競合を解決し、ファイルを解決済みとマークした後、次のコマンドを使用してリベースを継続します。
git rebase --continue
Gitは特徴ブランチの残りのコミットを master
ブランチの上に適用します。
ステップ7: アップデートされた特徴ブランチのプッシュ
特徴ブランチを master
に正常にリベースしたので、アップデートされた特徴ブランチをリモートリポジトリにプッシュすることができます。
git push origin dev
git pull
コマンドを使用して他のブランチに master
の変更を取り込む
ステップ 1: 作業ブランチを確認する
まず、main
からの変更を更新したいブランチに切り替えます。 これを行うにはgit checkout
コマンドを使用できます。 feature-branch
を作業ブランチの名前に置き換えます。
まず、main
ブランチからの変更を反映させる作業ブランチに切り替えるために、git checkout
コマンドを使用して作業ブランチに移動します。feature-branch
を自分の作業ブランチの名前に置き換えてください。
git checkout feature-branch
このコマンドにより、変更を反映させたいブランチに移動します。
ステップ2: main
から変更を取り込む
作業ブランチに切り替わったので、git pull
コマンドを使用してmain
ブランチから最新の変更を取得しマージすることができます。
git pull
コマンドは、2つのGitコマンドである git fetch
と git merge
の組み合わせです。リモートリポジトリから変更を取得し、現在のブランチに統合します。
git pull origin main --allow-unrelated-histories
このコマンドの各部分の役割は次のとおりです:
git pull
:pull処理を開始します。origin
:リモートリポジトリのデフォルト名です。別のリモートと作業している場合は、origin
をその名前に置き換えてください。main
:変更を取り込みたいブランチです。必要に応じて異なるブランチ名を指定できます。--allow-unrelated-histories
:このオプションを使用すると、Gitが関連性のない履歴をマージできるようになります。異なるコミット履歴を持つブランチを結合する際に便利です。
--allow-unrelated-histories
の理解
--allow-unrelated-histories
オプションは、現在のブランチと異なるコミット履歴を持つブランチから変更を取り込む場合に必要です。
これは、独立して作成されたブランチや現在のブランチと共通の祖先を持たないブランチからの変更をマージまたは取り込む場合に発生します。
--allow-unrelated-histories
を使用することで、Gitに対してコミット履歴が明確な共通の出発点を持たない場合でもマージを続行するよう指示します。これは、関連のないブランチを単一のブランチに統合する方法です。
ステップ3: 競合の解消(あれば)
マージ処理中に、作業ブランチと main
ブランチの変更が重複するか、または競合する場合、Gitは一時停止し、どのファイルで競合が発生しているかを示します。
衝突を解決するには、コードエディタで衝突しているファイルを開きます。これらのファイル内では、衝突マーカー(<<<<<<<
、=======
、>>>>>>>
など)で区切られたセクションが表示されます。ファイルを手動で編集して、どの変更を保持するか、どの変更を破棄するかを選択します。
ファイルの衝突を解決したら、変更内容を保存します。
ステップ4: 解決済みの衝突をマークする
ファイル内の衝突を解決したら、git add
コマンドを使用してそのファイルを解決済みとしてマークする必要があります。<conflicted-file>
は実際のファイル名で置き換えてください。
git add <conflicted-file>
各ファイルごとにこのプロセスを繰り返してください。
ステップ5: マージをコミットする
衝突を解決し、ファイルを解決済みとマークした後、意味のあるコミットメッセージを使用してマージをコミットする必要があります。
git commit -m "Merge changes from main into feature-branch"
このコミットメッセージは、将来の参照のためにマージの目的を説明するものです。
ステップ6: 更新したブランチをプッシュする
最後に、作業ブランチで行った変更をリモートリポジトリにプッシュします。
git push origin feature-branch
このコマンドにより、変更がリモートリポジトリに保存され、プロジェクトの共同作業をしている場合に他のチームメンバーがアクセスできるようになります。
結論
ソフトウェア開発では、さまざまな機能やバグ修正のために異なるブランチを維持することが一般的です。ただし、これらのブランチを後でスムーズに統合するためには、最新のmain
ブランチの変更をこれらのブランチに適用しておくことが重要です。
この記事では、git merge
、git rebase
、git pull
の3つの異なる方法でmain
ブランチから別のブランチに変更を取り込む方法を紹介しました。それぞれの方法には利点と使用ケースがあります。
Yahya Irmak has experience in full stack technologies such as Java, Spring Boot, JavaScript, CSS, HTML.
LinkedIn