2

これは少し特殊なケースです。一般的なケース(つまり、コンピューターコード)では、2つの変更を異なるブランチの同じ行に自動的にマージすることは安全ではないことを私は知っています。

ただし、この場合、問題の行は英語の文であり、変更は製品化です。例:

マージベース:

iPhoneまたはAndroidスマートフォンからツイートを検索するか、独自のツイートを作成してください。

ブランチ1:

iPhoneまたはAndroidフォンから%(PRODUCT:MESSAGE_PLURAL)を検索するか、独自のツイートを作成してください。

ブランチ2:

iPhoneまたはAndroidスマートフォンからツイートを検索するか、独自の%(PRODUCT:MESSAGE)を作成してください。

これは手作業でマージするのは簡単なケースですが、残念ながら、現在、これらの競合が非常に多く発生しています。これを行うことができるmergetoolはありますか?(またはこのプロセスを自動化する他の方法)

4

1 に答える 1

0

選択したマージ ツールである Araxis Merge でこれを実行しようとしたところ、空になりました。

これについて Beyond Compare フォーラムで最近質問がありまし

いくつかのオプションがあります: Araxis Merge と (私が信じている) Beyond Compare の両方を使用すると、マージ結果を正規表現で制御できます。あなたはそれを探求するかもしれません。

別のオプション、git diff branch1..branch2 -U99999 --word-diff > file.txt

iPhone または Android フォンから [-%(PRODUCT:MESSAGE_PLURAL)s-]{+tweets+} を検索するか、[-tweet-]{+%(PRODUCT:MESSAGE)s+} を書き込みます。あなた自身の!

[-*-]私は実際には開発者ではありませんが、開発者であれば、またはのインスタンスを識別し{+*+}、これらの文字を取り除き、 の存在に基づいてコンテンツを交互に保存または削除する正規表現を作成できると思います$(*)。製品化の共通要素。

> file.txt出力を関連ファイルにマッピングする追加の手順が必要になるため、多数のファイルがある場合、これは苦痛になる可能性があります。

考えられる解決策:git ls-files -u | git diff branch1..branch2 -U99999 --word-diff > ./intermediate/filename

そのコードは間違っていますが、マージされていないすべてのファイルを取得し、各ファイルの差分をファイル全体のコンテキストとともに中間ファイルに元のファイル名で保存する bash スクリプトを作成できるはずです。

その他のオプション:

通常どおりブランチをマージすることもできますが、上記のロジックに基づいてマージの競合を解決するスクリプトを記述します。 >>>>>など

私よりも経験豊富な人も利用できるかもしれませんgit-filter-branch

于 2012-10-09T19:07:30.887 に答える