2013-06-28 6 views
10

私はgitに新しく、Visual Studio用のgit拡張機能を使用しています。他のチームメンバーが変更をコミットするときに、プロジェクトを同期しようとすると、受信したコミットを見ることができますが、プロジェクトは同期されず、以下のエラーが発生します。ビジュアルスタジオ用Gitエクステンション

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

問題はどうやって競合をマージできますか?このエラーが発生した後に競合をマージするウィンドウはありません。また、すべての変更をコミットしました。

答えて

6

メッセージは、実際のマージの競合ではなくコミットされていない変更に関するものです。コミットされていない変更をマージしたり、気の利いたギフトをしたりしないことを学ぶ。操作を行う前に、変更をコミットしたり隠したりしてください。たとえそのような紛争にもフラグが立てられていなくても、あなたが本当にやりたいことではないようです。

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

あなたが作業の途中で(そして考え直して本当に正当な理由がある、正直である)場合は、stashを使用してからプル(またはリベース)してから、作業をアンシャッシュします。

リアルマージの競合は、ビジュアルマージツールを使用して処理するのが最善です。あなたはtortoisemerge、または私のお気に入りのソースギアのdiffmergeを試すことができます。 GEに同梱されているKdiff3は、見た目には良いですが、必要なものが文字通り候補を選ぶのでなければ、それ自体を解決するのにはあまり適していません。 GEはあなたを自動的に紛争解決に導きます。

+1

この問題を回避するには、良いワークフローの習慣を選択してください。マージする準備ができたら同期するマスターブランチにtchし、マスターが最新の状態になったらフィーチャーブランチをマージします。また、早送りスタイルのワークフローが好きな場合は、masterに対してフィーチャーブランチをリベースしてからマージすることもできます。しかし、基本的に - この答えに述べられているとおりです。 – patthoyts

3

これまでの回答は必ずしも真実ではありません。コミットされていない変更がない場合でも、このメッセージが表示されます。私の同僚&私はバグを修正し、私たちのローカルリポジトリにコミットしました。私は彼の方が好きです。私は自分の変更をチェックしたことはありませんが、それを元に戻しました&彼の変更を引っ張った。

一方、彼は自分の変更を(私に話さずに)元に戻してから、自分の変更をプッシュするように頼んだ。私は私の変更を捨てたと彼に言ったので、彼は復帰(2つのコミットで終わる)を元に戻した。

私は別の変更(コミットされていない変更がないローカルリポジトリにコミットした)をプッシュするとき、彼は自分の変更の復帰と再復帰の両方をプッシュし、上記のメッセージを受け取りました。

解決方法は非常に簡単ですが、私はアクションメニューを使用してコマンドプロンプトを開き、git pullを発行しました。それは正しく機能し、復帰と復帰で私のためにマージコミットを作成しました。

はい、彼は代わりに(insert incomprehensible git-gibberish here)を持つことができましたが、そうではありませんでしたので、それを吸います。それはうまくいく、私たちは動いている。

は、ここでは、この問題に関してVSフィードバック項目です:あなたはすでに最新の」得ればhttp://connect.microsoft.com/VisualStudio/feedbackdetail/view/955248/git-merge-fails-claiming-uncommited-change-would-be-overwritten-by-merge-ssh-mergeconflict

+0

git reset --hard、私のために働いた(別のマシン、VMで私が作った同じブランチへのコミットされていない変更によって引き起こされた問題かもしれない)。 – learnerplates

1

時には、git pullは(...十分ではありません。「)

コマンドラインからマージを行うために必要があるかもしれない。そして、

私にとってVisual Studio(2015、アップデート3で)Team Explorerで、BranchesActionsOpen In Command Prompt

git merge NameOfBranchBeingMergedFrom 

その後、ウィンドウを閉じて残りの作業を行います(コンフリクトのマージなど)VS

関連する問題