6

マージ後、問題を解決するために git mergetool を使用したいのですが、指定したツールで失敗します。

gitマージツール                                                                                                          
 マージツールの候補: opendiff kdiff3 tkdiff xxdiff meld tortoisemerge gvimdiffdiffuse ecmerge p4merge araxis bc3 vimdiff emerge
マージ:
main.c

「main.c」の通常のマージ競合:
  {ローカル}: 変更されたファイル
  {remote}: 変更されたファイル
Return キーを押して、マージ解決ツール (kdiff3) を開始します。
main.c のマージに失敗しました

指定したツールがまったく起動していないようです。

の出力

git config --list

merge.tool=kdiff3
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
4

2 に答える 2

5

kdiff3システムにインストールされていない可能性があります。ある場合は、PATH変数を介して利用できるかどうかを確認してください

試す

git config --global merge.tool <your_merge_program>

また、オペレーティング システムと利用可能なマージ プログラムを指定することもできます。

于 2012-06-21T11:45:38.247 に答える
1

git 2.10 では、diff/merge ツールのインストールの問題を特定するためのより良い終了ステータスが提供されることに注意してください。

John Keeping ( )によるcommit 45a4f5d (2016 年 8 月 15 日)を参照してください。( 2016 年 8 月 19 日コミット 331f06dJunio C Hamanoによってマージされました)johnkeeping
gitster

difftool: 常に致命的なエラーの終了コードを尊重します

現時点では、difftool の「トラスト終了コード」ロジックは、呼び出した diff ユーティリティの終了ステータスを常に抑制します。
これは、ファイルが異なるために diff が「1」を返したという理由だけで終了したくないので便利ですが、選択した diff ユーティリティが見つからないためにシェルがエラーを返すと混乱します。

POSIX が指定する

少なくとも bash と dash はこの仕様に従いますが、diff ユーティリティは通常1、無視する終了ステータスに " " を使用します。

126 以上の値は、何らかの致命的なエラーが発生したことを示す特別な値として処理します。

于 2016-08-22T08:03:17.063 に答える