Git プルマスターをブランチに

Yahya Irmak 2023年9月13日
  1. マスターから別のブランチにGitの変更を取り込む方法
  2. git mergeコマンドを使用してマスターから別のブランチに変更を取り込む方法
  3. git rebaseコマンドを使用してマスターから別のブランチに変更を取り込む方法
  4. git pull コマンドを使用して他のブランチに master の変更を取り込む
  5. 結論
Git プルマスターをブランチに

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: devmasterにリベースする

特徴ブランチがチェックアウトされている状態で、アップデートされた 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 fetch rebase

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 fetchgit 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

このコマンドにより、変更がリモートリポジトリに保存され、プロジェクトの共同作業をしている場合に他のチームメンバーがアクセスできるようになります。

git pull

結論

ソフトウェア開発では、さまざまな機能やバグ修正のために異なるブランチを維持することが一般的です。ただし、これらのブランチを後でスムーズに統合するためには、最新のmainブランチの変更をこれらのブランチに適用しておくことが重要です。

この記事では、git mergegit rebasegit pullの3つの異なる方法でmainブランチから別のブランチに変更を取り込む方法を紹介しました。それぞれの方法には利点と使用ケースがあります。

著者: Yahya Irmak
Yahya Irmak avatar Yahya Irmak avatar

Yahya Irmak has experience in full stack technologies such as Java, Spring Boot, JavaScript, CSS, HTML.

LinkedIn

関連記事 - Git Pull