21

Gitのpatiencediffアルゴリズム(引数を指定して呼び出すgit diffと得られるアルゴリズム)を。で使用したいと思います。これどうやってするの?--patiencegit add -p

背景:私はいくつかのXMLファイルを使用していますが、git diffの通常のアルゴリズムでは、「位置がずれている」入口/出口タグが原因で、かなり貧弱な差分が生成されます。を実行するgit diff --patienceと、はるかに便利なdiffが得られますが、でこれらのdiffを使用する明確な方法はありませんgit add -p

4

3 に答える 3

37

git add -p現在、diffフラグを拒否しますが、diff.algorithmconfigオプションを使用できます。

git config --global diff.algorithm patience

Git1.8.2の新機能。

于 2013-04-11T07:45:53.227 に答える
14

これは私のために働いた:

git -c diff.algorithm=patience add -p [...]

Cygwinで最新のgitv2.1.0を実行しています。

于 2014-09-10T16:13:59.030 に答える
4

うーん...あなたができることの1つは、出力をgit diff一時的な場所にパイプしてから、次のように読み戻すことgit applyです。

git diff --patience <commitA> <commitB> > /tmp/patch.out
# checkout a new branch or otherwise do what you need to prep
git apply < /tmp/patch.out

これにより、diffの出力が作業ディレクトリに適用されますが、変更がコミットまたはステージングされることはありません。git add -pその後、通常どおりに実行でき--patienceます。差分は、インタラクティブに追加する変更になります。

ワークフローにより適している場合は、直接パイプdiffすることができなかった理由はありません。applyこれは、本番統合のために自分のローカルブランチを再構築するときに、かなり定期的に行うことです。

マージ戦略としても使用できるように見えるので、diffをインタラクティブに追加する代わりに、必要なブランチを作成してからマージすることができる場合があります。

于 2012-09-14T13:37:47.080 に答える