33

この時点で、これはまぐれ以上のものであると考えられていたので、これは数回以上発生しました。ブランチが完成した後でマージするときは、本来あるべきよりもはるかに多くの変更があります。したがって、保留中の変更として表示されるほとんどのファイルは変更されませんでした(ほとんどの場合、ブランチでもベースでも)。私がそれらを比較するとき(私は比較を超えて使用します)、違いはありません。変更されていないすべてのファイルを調べたわけではありませんが、ほとんどの場合、それらはとしてマークされ[merge]、実際に変更されたファイルはとしてマークされているよう[merge,edit]です。

あるケースでは、おそらく100個のファイルを変更しましたが、保留中の変更では22,000を超える変更が示されました。tfsは、どのファイルが変更され、どのファイルが変更されなかったかを知るのに十分賢いと考えて、ある時点でそれらをチェックインしようとしました。しかし、それはすべてのファイルをチェックインしました。誰かが何が起こっているのか、そしてそれを修正する方法を知っていますか?

TFS 2012 w\Update1を実行してい
ます。誰もがVisualStudio2012 w \Update1を使用しています。

4

5 に答える 5

39

同じ問題を抱えている人にとっての回避策は、保留中の変更を元に戻すことです。確認ダイアログが表示されたら、「すべていいえ」を選択します。保留中の変更のみを残す必要があります。

于 2013-03-26T17:10:26.530 に答える
25

100個のファイルを変更し、TFSが数千個のファイルをマージしたいという問題について。これは通常、ブランチの名前を変更する(または削除してから削除を解除する、または移動する)ことによって発生します。これは私を数回噛みました、そして私はあなたの痛みを感じます。

私ができる最善のアドバイスは、ブランチを作成したら、そのままにしておくことです。移動したり、名前を変更したりしないでください。ブランチの場所または名前が間違っている場合は、ブランチを削除して新しいブランチを作成するときまで、ブランチをそのまま使用してください。

TFS 201xが舞台裏で機能する方法のため、ブランチのルートフォルダーを変更すると、効果的に別のオブジェクトに変換されます。ブランチを再度マージしようとすると、TFSはベースレスマージを実行します。これは、ブランチ内のすべてのファイルが変更されたように見えることを意味します(変更されていない場合でも)。これは新しい動作であり、古いバージョンのTFS(2005/2008)です。 )この問題に悩まされることはありません。

たとえば、次のようなチームプロジェクトがあります

$/TeamProject/Main

次に、「Main」から「Dev」というブランチを作成します

$/TeamProject/Dev

好きなだけマージでき、問題はないはずです。次に、複数の開発ブランチがある場合、フォルダー構造が少し乱雑になる可能性があると判断したため、チームプロジェクトのルートに「開発」というフォルダーを作成し、開発ブランチをこのフォルダーに移動します。

$/TeamProject/Development/Dev

さて、舞台裏での移動は名前の変更と削除です。古いdevブランチはまだ下にあり$/TeamProject/Devます(これは、「ツール」、「オプション」、「ソース管理」、「チームファンデーションサーバー」に移動して確認できます)。 「削除されたアイテムをソース管理に表示する」という設定

と呼ばれるフォルダ$/TeamProject/Development/Devは実際にはまったく新しいものです!したがって、「メイン」とのマージ関係はありません。紛らわしいことに、IDEは関係を示しますが、実際には存在しません。初めてTFSにマージ$/TeamProject/Development/Devする$/TeamProject/Mainと、卑劣なベースレスマージが実行され、分岐関係が確立されます。

ブランチの名前を変更した場合も同じことが起こります(古いブランチは削除され、新しいブランチが内部で作成されます)

このブログでは、もう少し詳しく説明します

于 2013-03-25T17:51:32.247 に答える
10

元に戻る確認ダイアログの「すべてにいいえ」オプションを使用した上記のコメントは問題なく機能しますが、Mark Hosangがコメントしたように、新しいファイルがある場合は正しく機能しません。Mladen Mihajlovicは、これらの新しいファイルを選択しないようにすることができるのは正しいことです。ただし、コードベースが大きい場合、これをくぐり抜けるのは非常に面倒です。

だから私の方法:確認ダイアログに到達する前に、元に戻すファイルを選択するためのウィンドウが表示されます。このウィンドウには並べ替え可能な列があります。Change列で並べ替えて、mergeステータスのあるファイルのみを選択できます(これらは変更されていないファイルです。merge, edit編集されたファイルでありmerge, branch、新しいファイルです)。選択したものだけで[変更を元に戻す]をクリックするだけで、整理されたマージ変更セットの美しさを楽しむことができます。

例

于 2017-01-04T19:10:19.767 に答える
7

これを試して:

  1. 保留中のファイルをすべて選択
  2. コンテキストメニューで[元に戻す...]をクリックします
  3. [保留中の変更を元に戻す]ダイアログで、[変更]列でファイルを並べ替えます
  4. Shift +クリックを使用して、「マージ」以外のすべてのファイルの選択を解除します
  5. [変更を元に戻す]ボタンをクリックします
于 2016-12-09T16:05:58.687 に答える
0

私の経験から、これは、TFSがブランチAのファイルAとブランチBのファイルBの間に関係がない場合に発生します。

ブランチをマージする場合、関係がまだ存在しない場合、TFSは常にファイル間に関係を作成します。したがって、これらの関係を記憶するために「マージ」としてチェックインする必要があります。

関係が必要ない場合(たとえば、親の変更など)、これらの「マージ」変更を元に戻す傾向があります。

于 2017-01-10T07:50:39.897 に答える