2017-11-06 6 views
2

GITワークフローを動作させようとしましたが、VS2017(v15.4.2)GIT UIを使用するのが苦労しました。VS2017 GITのマージコンフリクトを解決する

これらは私の手順は次のとおりです。

  • は、Testという名前の新しいWindowsフォームプロジェクトを作成し、それをローカル リポジトリを作成します。
  • 特長1
  • というマスターブランチからブランチを作成
  • 特長2という名前のmasterブランチからブランチを作成します特長1ブランチをアクティブ化のClass1という名前のクラスを追加し、
  • それに特長1という名前のメソッド を追加コミット
  • が特長2分岐がClass1の名前のクラスを追加し、それに
  • を特長2という名前のメソッドを追加変更のアクティブ化すると、変更
  • が特長2ブランチをマージコミットマスターブランチに移動します(マスターブランチ は現在Feature2のClass1を持っています)
  • feature1ブランチをマスターにマージします。

これにより、マージの競合が発生します。ただし、無効なClass1ファイルを作成せずにマージの競合を解決することはできません。 Feature1メソッドを既存のClass1ファイルに追加するだけでは、usingステートメントとクラス定義が挿入されるため、追加することはできないようです。

追加されたFeature2メソッドのみを既存のClass1に追加するにはどうすればよいですか? 私はここで何かを見逃していますか?

ありがとうございます。

答えて

0

残念ながら、Visual Studioでmerge conflictsを解決することは、今のところ理想的ではありません。 2つのコピーは、コミットと対応するハッシュに基づいて比較されます。 2つのファイルが同じに見えるかもしれないし、異なるハッシュを持つ2つの異なるコミットから引き続き発生する可能性があることを考えると、Visual Studioはそのようなコミットを解決することが難しいと判断します。

  1. 手動Feature2メソッドをコピーして、feature1ブランチで作業コピーに追加して、masterにこのブランチをマージしよう:あなたは、この場合の2つのオプションがあります。 merge conflictが再び表示されますが、Visual Studioにはtake sourceまたはtake targetのいずれかのオプションが用意されています。この場合、feature1ブランチに対応するtake sourceブランチがあります。このブランチが必要な変更をすべて行っていることがわかっているので、masterが提供する競合を無視することができます。
  2. インストールTortoise Gitまた、他の評判の良いgitクライアントを選ぶこともできます。このようなクライアントは、同一の変更を検出して、ここで苦しんでいる種類のmerge-conflictsを自動的に解決します。
0

Visual Studioで競合するファイルを「マージ」し、マージしたバージョンを編集してからマージを完了することができます。 [Resolve Conflicts]ページでは、競合を選択してマージする必要があります。競合を処理した後、結果を受け入れることができます(必要に応じて解決されたコンテンツを編集する)。

次のようなUIが表示されます。 Merge conflicting file

これは、あなたが期待通りに競合を解決(に成功)することを可能にしていますか?

関連する問題