Skip to main content

Enterprise Server 3.22 は、現在リリース候補として使用できます。

コマンド ラインを使用してマージ コンフリクトを解決する

競合する変更を特定し、ファイルを編集し、解決をコミットすることで、コマンド ラインを使用してマージの競合を解決します。

マージの競合は、競合する変更がファイルの同じ行に加えられた場合、または 1 人のユーザーがファイルを編集し、別のユーザーが同じファイルを削除したときに発生します。 「マージ競合」を参照してください。

ヒント

GitHubの競合エディターを使用して、プル要求の一部であるブランチ間の競合する行変更マージの競合を解決できます。 「GitHubでのマージ競合の解決」を参照してください。

競合している行変更のマージ コンフリクト

競合する変更が同じ行に影響する場合は、保持する変更を選択し、解決をコミットします。

  1. ターミナルまたは Git Bash を開きます。

  2. マージ コンフリクトが発生しているローカルの Git リポジトリに移動します。

    cd REPOSITORY-NAME
    
  3. マージ競合の影響を受けるファイルを一覧表示します。 この例では、ファイル styleguide.md にマージ競合が発生しています。

    $ git status
    > # On branch branch-b
    > # You have unmerged paths.
    > #   (fix conflicts and run "git commit")
    > #
    > # Unmerged paths:
    > #   (use "git add <file>..." to mark resolution)
    > #
    > # both modified:      styleguide.md
    > #
    > no changes added to commit (use "git add" and/or "git commit -a")
    
  4. Visual Studio Code などの任意のテキスト エディターを開き、マージの競合があるファイルに移動します。

  5. 競合マーカーの <<<<<<<をファイルで検索します。 HEAD またはベース ブランチからの変更は、 <<<<<<< HEADの後に =======が続き、その後に他のブランチと >>>>>>> BRANCH-NAMEからの変更が表示されます。

    If you have questions, please
    <<<<<<< HEAD
    open an issue
    =======
    ask your question in IRC.
    >>>>>>> branch-a
    
  6. あなたのブランチの変更だけを保持したいか、他のブランチの変更だけを保持したいか、あるいは両方のブランチからの変更を取り入れられる新しい変更を作成するかを決めてください。 競合マーカー <<<<<<<=======>>>>>>> を削除し、最終的なマージで必要な変更を行います。 たとえば、次の両方の変更を保持できます。

    If you have questions, please open an issue or ask in our IRC channel if it's more urgent.
    
  7. 変更をステージングします。

    git add .
    
  8. 変更をコメントを付けてコミットします。

    git commit -m "Resolve merge conflict by incorporating both suggestions"
    

これで、コマンド ラインでブランチをマージしたり、GitHubのリモート リポジトリに変更をプッシュしたり、pull request で変更をマージしたりできるようになりました。

削除したファイルのマージコンフリクト

あるブランチがファイルを削除し、別のブランチが同じファイルを編集する場合は、ファイルを保持するか削除するかを選択してから、解決をコミットします。

  1. ターミナルまたは Git Bash を開きます。

  2. マージ コンフリクトが発生しているローカルの Git リポジトリに移動します。

    cd REPOSITORY-NAME
    
  3. マージ競合の影響を受けるファイルを一覧表示します。 この例では、ファイル README.md にマージの競合が発生しています。

    $ git status
    > # On branch main
    > # Your branch and 'origin/main' have diverged,
    > # and have 1 and 2 different commits each, respectively.
    > #  (use "git pull" to merge the remote branch into yours)
    > # You have unmerged paths.
    > #  (fix conflicts and run "git commit")
    > #
    > # Unmerged paths:
    > #  (use "git add/rm <file>..." as appropriate to mark resolution)
    > #
    > #  deleted by us:   README.md
    > #
    > # no changes added to commit (use "git add" and/or "git commit -a")
    
  4. Visual Studio Code などの任意のテキスト エディターを開き、マージの競合があるファイルに移動します。

  5. 削除されたファイルを保持するかどうかを決定します。 リポジトリに追加し直すには:

    git add README.md
    

    このファイルをリポジトリから削除するには:

    $ git rm README.md
    > README.md: needs merge
    > rm 'README.md'
    
  6. 変更をコメントを付けてコミットします。

    $ git commit -m "Resolve merge conflict by keeping README.md file"
    > [branch-d 6f89e49] Merge branch 'branch-c' into branch-d
    

マージの競合が解決されると、 GitHub のリモート リポジトリに変更をプッシュしたり、プル要求をそのベース ブランチにマージしたりできるようになりました。

詳細については、次を参照してください。