5

さて、ここに私のQがあります。「gitrerere」は2つのファイルのハッシュを比較して、解像度を把握しますか?つまり、次のタグを含むXMLファイルがあるとします。

<number>12</number>

私が対立しているとき、その数は通常13、14などのようなものに変更されるので、私は立ち往生しています:

<<<<<<<
<number>12</number>
=======
<number>13</number>
>>>>>>>

番号が前回と同じでなくても、rerereはこの競合を自動的に解決できますか?私は常にそれがより高い数(上記の例では13)を取るような方法でそれを解決したいと思っています。それで、それが番号12と13の解決を記録する場合、それは異なる番号との競合を解決しますか?私はそれがそうならないのではないかと疑っていますが、尋ねたほうがいいかもしれません。

4

2 に答える 2

7

番号が前回と同じでなくても、rerereはこの競合を自動的に解決できますか?私は常にそれがより高い数(上記の例では13)を取るような方法でそれを解決したいと思っています。

いいえ、git rerereできません。

を使用するときはgit rerere、次の2つのことを覚えておくように求めています。

  • 特定の競合(つまり、競合しているハンクの文字通りのテキストと、それらが含まれているファイル)。と
  • その対立に適用されるべき決議

これらは、ある種の変換関数(たとえば、「NをN + 1に置き換える」)ではなく、ハンクリテラル(たとえば、「12を13に置き換える」)であるため、gitは、各数値をより高い数値に置き換えたいと推測できません。

gitが後で、以前に記憶された競合のいずれとも一致しない競合に遭遇した場合、たとえ類似していても(数字が常に1つだけである例のように)、その競合にまったく遭遇しなかったかのようになります。

このXMLファイルが自動的に生成される場合、1つの方法が可能です。その場合は、ソース管理にまったく保持せず、代わりに実行時に生成することを検討することをお勧めします。そうすれば、対応する競合をクリーンアップする必要がなくなります。

もう1つのアプローチは、git rerere完全に回避し、代わりに、問題を解決するカスタムマージドライバーを作成することです。私は以前にこれを行ったことがありますが、それは取るに足らない量の作業であり、いくつかのコードを記述してテストする必要があります。この戦略に興味がある場合は、カールの回答のリンクを参照してください。

于 2012-04-21T18:19:00.590 に答える
2

Vanillagitはそのようにファイルを比較しません。厳密な文字列比較を行い、そのセマンティクスについては何も知りません。

ただし、gitattributesのマニュアルページにある「カスタムマージドライバの定義」を参照してください。独自のプログラムを作成して、より大きな数を選択するなど、特定のマージを任意の方法で解決できます。

于 2012-04-21T22:05:26.320 に答える