web-dev-qa-db-ja.com

プルリクエストでのGitの競合

私は2つのブランチを持っています-masterdevelop

私はdevelopブランチで5つのアイテムを含むプルリクエストをいくつか行っていますが、これはmasterのアイテム数と同じです。

ただし、誰かがいくつかのコミットを実行し、pushedブランチへのいくつかの項目でmasterを実行したため、現在8つの項目があります。

developのプルリクエストはまだ承認/マージされていないため、プルリクエストを更新しようとすると、This pull request can't be merged. You will need to resolve conflicts to be able to mergeそして私に次のことをするように頼んだ:

git fetch Origin master
git checkout develop 
git merge FETCH_HEAD
git commit
git Push Origin HEAD

そして、これはコミットを「プッシュ」した後で起こり、時々混乱します。次に、追加の3つの新しい項目を再度追加してコミットするように求められていることに気付きました。つまり、これは私の2つの支店間のアイテムと内容が常に同じであることを確認する必要があることを意味しますか?私はいつもgit pull/fetchしかし、私が確認するより良い方法はありますか?

14
dissidia

これは、GitHubがPRブランチをmasterにマージすることを望んでいることを意味しますが、競合があるため、マージできません。質問のコメントで説明したように、これに対処する最良の方法は(通常)、コマンドラインでmasterブランチをdevelopにマージすることです。競合が表示され、解決するように求められます。マージを完了してプッシュすると、GitHubの緑色のボタンを使用してPRをmasterにマージできるようになります。

あなたcoulddeployブランチをmasterにマージするだけです(これは少し賢明に聞こえます)。その場合、PRを完全にバイパスすることになります。 PRを「マージ解除」して閉じる必要があり、個別にマージコミットをmasterにプッシュします。

最初の方法で

  1. pRを使用してGitHubでマスターにマージすることで、より良い監査証跡を作成します。
  2. マージ後、コードがmasterに到達する前にコードを確認する機会をチームに与えます。そして
  3. pRをチェックする自動テスト(Travis CIやCircleCIなど)がある場合、それらにマージされたコードを実行する機会も与えます。
18
Peeja

以下のようにEclipse-gitインターフェースを使用して解決しました。

1-すべての変更を 'dev'ブランチで準備し、gitにプッシュします。

2- 'master'ブランチにチェックアウトし、すべての変更をプルします。

3-「Gitリポジトリビュー->ローカルフォルダーを展開する」に移動し、「マスター」ブランチを右クリックして、「マージ」オプションをクリックします。

4- [Gitステージング]ウィンドウに赤いスポットとのすべての競合が表示されます。

5-各赤いスポットを右クリックして、-> 'git indexで置き換える'をクリックします。その赤い点が消えます。

6-すべての赤いスポットに対してこれを行った後、右側のボタンからマージをコミットします。

7-完了。

0
Tukaram Bhosale