マージの競合を解決する

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

このページの内容

We're in the process of updating Bitbucket's pull request experience. As a result, you may only see content conflicts right now. We're working on displaying all types of conflicts. To get immediate access to all conflict types for an individual pull request, go to > Open in old view.

プル リクエストを作成すると、Bitbucket は更新されたソースと対象の元のコードとの比較を自動的に行います。対象のコードにほかのユーザーも変更を行っていた場合、マージを試行した際に、競合がある旨の通知が表示されます。

マージの競合がある場合、プル リクエストで [マージ] ボタンをクリックしてマージすうrことはできません。競合を解決するには、変更をローカル リポジトリにプルして、修正します。マージの競合は次のように表示されます。

Resolving the conflict between Git branches

These steps include details for resolving conflicts between two branches in a Git repository. You'll see references to these placeholders:

  • The directory to the forked repository as <repo_directory>
  • The destination branch as <destination_branch>
  • The source branch as <feature_branch>
  • The file with resolved conflicts as <filename>
詳細を展開
  1. リポジトリのディレクトリに移動します。

    $ cd ~/<repo_directory>

    For example, if your repository name is my-repository, the result might look something like this:

    computer:$ cd ~/my-repository
    computer:my-repository emmap$
  2. リポジトリの最新のバージョンを Bitbucket からプルします。

    $ git pull
  3. ソース ブランチをチェックアウトします。

    $ git checkout <feature_branch>
  4. Pull the destination branch into the source branch. At this point, pulling the destination will try to merge it with the source and reveal all the conflicts.

    $ git pull origin <destination_branch>

    For example, if your destination branch is master, the result will look something like this:

    computer:my-repository emmap$ git pull origin master
     * branch            master     -> FETCH_HEAD
    Auto-merging team_contact_info.txt
    CONFLICT (content): Merge conflict in team_contact_info.txt
    Automatic merge failed; fix conflicts and then commit the result.

    When you merge two branches with conflicts locally, you'll get conflict markers in the file when you open your editor.

  5. Open the file to resolve the conflict. You can do this using the command line or you can navigate to the file.
    The file will look something like this:

    A. The beginning of the change in the HEAD branch. In this case, HEAD represents the active branch into which you're merging.
    B. The end of the change in the active branch and the beginning of the change in the non-active branch.
    C. The end of the change in the non-active branch.

  6. 次の操作を行って競合を解消します。
    1. Git が追加した変更記号を削除します (上述のスクリーンショットのAB、および C)。
    2. 内容を修正します。
    3. Save the file.
      The result will look something like this:
  7. 変更を追加、コミットします。

    $ git add <filename>
    $ git commit -m'commit message'
  8. 変更をリモートにプッシュします。

    git push origin <feature_branch>

プル リクエストを確認すると、プル リクエストは引き続きオープンで、マージの競合は表示されなくなっていることがわかります。

Resolving the conflict between Git forks

These steps include details for resolving conflicts between a forked repository and its original Git repository. You'll see references to these placeholders:

  • The directory to the forked repository as <repo_directory>
  • The URL of the original repository as <original_repo_URL>
  • The file with resolved conflicts as <filename>
  • The destination branch of the forked repository as <destination_branch>

These instructions describe how to resolve conflicts in the forked repository by pulling updates from the original repository. Alternatively, you can pull the forked repository into the original repository to resolve conflicts there, which automatically merges the pull request when you push.

詳細を展開
  1. フォークされたリポジトリのディレクトリに移動します。

    $ cd ~/<repo_directory>

    For example, if your repository name is my-repository, the result might look something like this:

    computer:$ cd ~/my-repository
    computer:my-repository$
  2. フォークされたリポジトリでほかのユーザーが作業していた場合、Bitbucket からリポジトリの最新バージョンを取得していることを確認します。

    $ git pull


  3. フォークされたリポジトリとマージするために、宛先リポジトリをローカル リポジトリにプルします。

    1. リポジトリで URL をコピーします。
    2. コマンド ラインで、git pull とリポジトリ URL を入力します。

      $ git pull <original_repo_URL>

      結果は次のようになります。

      computer:my-repository emmap$ git pull git@bitbucket.org:user/myteamquotes.git
      remote: Counting objects: 219, done.
      remote: Compressing objects: 100% (219/219), done.
      remote: Total 219 (delta 137), reused 0 (delta 0)
      Receiving objects: 100% (219/219), 565.11KiB | 382.00KiB/s, done.
      Resolving deltas: 100% (137/137), completed with 2 local objects.
      From bitbucket.org:tutorials/tutorials.git.bitbucket.org
      * branch            HEAD       -> FETCH_HEAD
      Auto-merging editme.html
      CONFLICT (content): Merge conflict in editme.html
      Automatic merge failed; fix conflicts and then commit the result.
  4. Open the file to resolve the conflict. You can do this using the command line or you can navigate to the file.
    The file will look something like this:

    A. The beginning of the change in the HEAD branch. In this case, HEAD represents the active branch into which you're merging. 
    B. The end of the change in the active branch and the beginning of the change in the non-active branch.
    C. The end of the change in the non-active branch.

  5. 次の操作を行って競合を解消します。
    1. Git が追加した変更記号を削除します (上述のスクリーンショットのAB、および C)。
    2. 内容を修正します。
    3. Save the file.
      The result will look something like this:
  6. 変更を追加、コミットします。

    $ git add <filename>
    $ git commit -m'commit message'
  7. 変更を宛先リポジトリにプッシュします。

    $ git push origin <destination_branch>

プル リクエストを確認すると、プル リクエストは引き続きオープンで、マージの競合は表示されなくなっていることがわかります。

Resolving the conflict between Mercurial branches

These steps include details for resolving conflicts between two branches using Sourcetree. To resolve conflicts for a Mercurial repository, you'll need to install and use an additional merge tool. Start by installing Sourcetree if you don't have it yet.

詳細を展開
  1. Open the repository in Sourcetree.

  2. リポジトリで、ソース ブランチにいることを確認します。[ブランチ] に、チェックアウトしたブランチが太字で表示されます。ソース ブランチがチェックアウトされていない場合、そのブランチ名をダブルクリックします。

  3. [プル] ボタンをクリックして、Bitbucket からリポジトリの最新バージョンをプルします。[開く] ダイアログでは既定設定のまま [OK] をクリックします。

  4. 競合を含む 2 つのブランチをマージします。
    1. ソース ブランチで最新のコミットをクリックします。
    2. マージ ボタンをクリックします。
    3. 宛先ブランチで最新のコミットをクリックします。
    4. ダイアログで [OK] をクリックします。
  5. ソースをプルすると、宛先リポジトリとのマージの試行が行われ、すべての競合が検出されるため、[マージの解消] ダイアログが表示されます。OK をクリックします。

  6. Open the file with your editor to resolve the conflict.
    The file will look something like this:

    A. The beginning of the change in the active branch.
    B. The end of the change in the active branch and the beginning of the change in the non-active branch.
    C. The end of the change in the non-active branch.

  7. 次の操作を行って競合を解消します。
    1. Git が追加した変更記号を削除します (上述のスクリーンショットのAB、および C)。
    2. 内容を修正します。
    3. Save the file.
      The result will look something like this:
  8. Go back to Sourcetree, and select the file with conflicts. From Actions, select Resolve Conflicts and then select Mark Resolved. From the dialog, click OK.
  9. [コミット] ボタンをクリックし、コミット メッセージを入力して、[コミット] をクリックします。
  10. [プッシュ] ボタンをクリックし、選択した内容を確認して [OK] をクリックします。

プル リクエストを確認すると、プル リクエストは引き続きオープンで、マージの競合は表示されなくなっていることがわかります。

Resolving the conflict between Mercurial forks

These steps include details for resolving conflicts between a forked repository and its original repository using Sourcetree. To resolve conflicts for a Mercurial repository, you'll need to install and use an additional merge tool. Start by installing Sourcetree if you don't have it yet.

These instructions describe how to resolve conflicts in the forked repository by pulling updates from the original repository. Alternatively, you can pull the forked repository into the original repository to resolve conflicts there, which automatically merges the pull request when you push.

詳細を展開
  1. Open the forked repository in Sourcetree.

  2. フォークされたリポジトリで [プル] ボタンをクリックして、Bitbucket から宛先ブランチの最新バージョンを取得します。[開く] ダイアログでは既定オプションのまま [OK] をクリックします。

  3. To pull the most recent version of the original repository, click the Pull button again. From the open dialog:
    1. [このリポジトリをプル] で [カスタム] を選択し、元のリポジトリの URL を入力します。
    2. OK をクリックします。
  4. ソースをプルすると、宛先リポジトリとのマージの試行が行われ、すべての競合が検出されるため、[マージの解消] ダイアログが表示されます。OK をクリックします。

  5. ファイルを任意のエディタで開いて競合を解消します。

    The file will look something like this:

    A. The beginning of the change in the active branch.
    B. The end of the change in the active branch and the beginning of the change in the non-active branch.
    C. The end of the change in the non-active branch.

  6. 次の操作を行って競合を解消します。
    1. Git が追加した変更記号を削除します (上述のスクリーンショットのAB、および C)。
    2. 内容を修正します。
    3. Save the file.
      The result will look something like this:
  7. Go back to Sourcetree, and select the Uncommitted changes line from the History.
  8. [アクション] で [競合の解消] を選択し、[解決済みとしてマーク] を選択します。ダイアログで [OK] をクリックします。
  9. [コミット] ボタンをクリックし、コミット メッセージを入力して、[コミット] をクリックします。
  10. [プッシュ] ボタンをクリックし、選択した内容を確認して [OK] をクリックします。

プル リクエストを確認すると、プル リクエストは引き続きオープンで、マージの競合は表示されなくなっていることがわかります。

最終更新日 2018 年 5 月 22 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.