Bitbucket Cloud の使用を開始する
Bitbucket Cloud を初めてお使いですか? 新規ユーザー用のガイドをご利用ください。
プル リクエストを作成すると、Bitbucket は更新されたソースと対象の元のコードとの比較を自動的に行います。対象のコードにほかのユーザーも変更を行っていた場合、マージを試行した際に、競合がある旨の通知が表示されます。
マージの競合がある場合、プル リクエストで [マージ] ボタンをクリックしてマージすうrことはできません。競合を解決するには、変更をローカル リポジトリにプルして、修正します。
以降の説明は、Git リポジトリの 2 つのブランチ間の競合に対応する手順です。次のプレースホルダーが使用されます。
フォークされたリポジトリのディレクトリ: <repo_directory>
宛先ブランチ: <destination_branch>
ソース ブランチ: <feature_branch>
解決済みの競合があるファイル: <filename>
詳細を展開
リポジトリのディレクトリに移動します。
1
$ cd ~/<repo_directory>
たとえば、リポジトリ名が "my-repository" の場合、結果は次のようになります。
1
2
computer:$ cd ~/my-repository
computer:my-repository emmap$
リポジトリの最新のバージョンを Bitbucket からプルします。
1
$ git pull
ソース ブランチをチェックアウトします。
1
$ git checkout <feature_branch>
宛先ブランチをソース ブランチにプルします。この時点では、宛先ブランチをプルすると、それをソースとマージできるかの試行が行われ、すべての競合が検出されます。
1
$ git pull origin <destination_branch>
たとえば、宛先ブランチが "main" の場合、結果は次のようになります。
1
2
3
4
5
6
computer:my-repository emmap$ git pull origin main
* branch main -> 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.
競合がある 2 つのブランチをローカルでマージすると、エディターでファイルを開いたときに競合のマーカーが表示されます。
ファイルを開いて競合を解決します。これを行うには、コマンド ラインを使用するか、ファイルに移動します。
次の操作を行って競合を解消します。
Git によって追加された変更指定を削除する
内容を修正する
ファイルを保存する
変更を追加、コミットします。
1
2
$ git add <filename>
$ git commit -m'commit message'
変更をリモートにプッシュします。
1
git push origin <feature_branch>
プル リクエストを確認すると、プル リクエストは引き続きオープンで、マージの競合は表示されなくなっていることがわかります。
次の手順では、フォークされたリポジトリと元の Git リポジトリとの間の競合を解決する手順について説明します。次のプレースホルダーが使用されます。
フォークされたリポジトリのディレクトリ: <repo_directory>
元のリポジトリの URL: <original_repo_URL>
解決済みの競合があるファイル: <filename>
フォークされたリポジトリの宛先ブランチ: <destination_branch>
ここでは、フォークされたリポジトリの競合を、元のリポジトリから更新をプルすることで解決する手順について説明します。フォークされたリポジトリを元のリポジトリにプルして元のリポジトリで競合を解決し、プッシュ時にプル リクエストが自動的にマージされるようにすることもできます。
フォークされたリポジトリのディレクトリに移動します。
1
$ cd ~/<repo_directory>
たとえば、リポジトリ名が "my-repository" の場合、結果は次のようになります。
1
2
computer:$ cd ~/my-repository
computer:my-repository$
フォークされたリポジトリでほかのユーザーが作業していた場合、Bitbucket からリポジトリの最新バージョンを取得していることを確認します。
1
$ git pull
フォークされたリポジトリとマージするために、宛先リポジトリをローカル リポジトリにプルします。
リポジトリで URL をコピーします。
コマンド ラインで、git pull とリポジトリ URL を入力します。
1
$ git pull <original_repo_URL>
結果は次のようになります。
1
2
3
4
5
6
7
8
9
10
11
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.11 KiB | 382.00 KiB/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.
ファイルを開いて競合を解決します。これを行うには、コマンド ラインを使用するか、ファイルに移動します。
次の操作を行って競合を解消します。
Git によって追加された変更指定を削除する
内容を修正する
ファイルを保存する
変更を追加、コミットします。
1
2
$ git add <filename>
$ git commit -m'commit message'
変更を宛先リポジトリにプッシュします。
1
$ git push origin <destination_branch>
プル リクエストを確認すると、プル リクエストは引き続きオープンで、マージの競合は表示されなくなっていることがわかります。
この内容はお役に立ちましたか?