10

私は git が初めてで、Visual Studio の git 拡張機能を使用しています。プロジェクトを同期しようとすると、他のチーム メンバーが変更をコミットすることがあります。着信コミットは表示されますが、プロジェクトは同期されず、以下のエラーが発生します。

libgit2 によってエラーが発生しました。カテゴリ = 21 (MergeConflict)。2 つのコミットされていない変更は、マージによって上書きされます

問題は、どうすれば競合をマージできるかということです。このエラーが発生した後、競合をマージするためのウィンドウがなく、すべての変更もコミットしました。

4

3 に答える 3

5

メッセージはコミットされていない変更に関するものであり、実際のマージの競合ではありません。コミットされていない変更をマージしたり、派手な git を実行したりしないことを学びます。操作の前に、変更をコミットするか、それらを隠します。そのような競合にフラグが立てられていなくても、それはあなたが本当にやりたかったことではない可能性があります。

GE には、ワークツリーの変更を表示するオプションがあり (巨大なレポで作業し、定期的に何百もの変更されたファイルがある場合を除き、「遅い」警告を無視してください)、ブラウズでそれを確認することに慣れます。また、「コミット」ボタンにはカウントが表示されます。マージを扇動すると、カウントは 0 になります。

作業の途中で同期したい場合 (もう一度考えて、本当に正当な理由があります)、 を使用stashしてからプル (またはリベース) し、それが完了したら、作業を unstash します。

実際のマージ競合は、ビジュアル マージ ツールを使用して処理するのが最適です。tortoisemerge や、私のお気に入りの sourcegear の diffmerge を試すことができます。GE に同梱されている Kdiff3 は、周囲を見回すことはできますが、文字通り候補を選択するだけでよい場合を除き、それ自体を解決することはあまり得意ではありません。GE は、競合の解決を自動的に行います。

于 2013-06-28T11:08:22.943 に答える
1

十分でない場合もありgit pullます... (「すでに最新の状態です」と表示された場合)

コマンド ラインからマージを実行する必要がある場合があります。

( Visual Studio2015, Update 3 for me) のTeam Explorer, Branches, Actions,Open In Command Promptその後:

git merge NameOfBranchBeingMergedFrom

次に、そのウィンドウを閉じて、残りの操作 (競合のマージなど) を行います。VS

于 2016-08-03T17:04:36.993 に答える