2016-08-23 6 views
3

私はgit difftoolとしてemacs ediffを使用しようとしています。Edith as git difftool

私はここで提案構成のいくつか続いている:それは、特定のファイルの異なるGitのリビジョン間で比較することになると Using ediff as git mergetool

を、私はすべての問題を持っていない:ediffはうまく機能し、両方のバージョンの違い適切に描かれている。

しかし、git difftoolを実行して、ファイルの現在のディレクトリバージョンと特定のgitリビジョンを比較しようとすると、問題が発生します。 一部のファイルについては、私は次のエラーを取得しています:このエラーは特定のファイルだけでなく、それらのすべてのために来るので、それは奇妙である

apply: Wrong type argument: arrayp, nil

私はいくつかのファイルを試しましたが、大体のルールは以下の通りです: - 比較するファイルがgitルートディレクトリに置かれていないと失敗します。 - それ以外の場合、ediffはファイルの現在のバージョンと指定されたリビジョンとの間で何の問題もなく表示します。

私は上記のリンクで説明した設定のいくつかを試してみました。それらのすべてが私に同じ結果を与えます:git difftoolは、非ルートのgitファイルの現在のディレクトリバージョンと特定のgitリビジョンを比較すると失敗します。

これはどのように修正できますか?

ありがとうございます。 -Bob

+0

あなたは 'meld'を使うこともできます。これは素晴らしいです! – VKatz

+0

さて、私はmeldを知っていますが、それは私のワークフローの一部であるので、ediffを好んでいます。私もemacsの中でmagitを使い、それは完全に動作します。しかし、時々、私が魔力に陥ることなく即座にdiffを開始したいときがあります。それが私が魔力を必要とする理由です。 –

答えて

1

Gitは、ediff/emergeを含む多くの標準差分/マージツールを知っています。

git config --global diff.tool ediff 

を試してみて、

git difftool --tool=ediffclient master -- <file> 

または類似でそれを呼び出します。 ediffclientはemacsclientを使用し、私はYMMVを好む新しいemacsを起動しません。

+0

ありがとうございます。私はあなたが言ったことを試して、それは正常に動作します。よろしく –

+0

あなたはなぜ答えを受け入れていないのですか? – Nick

+0

申し訳ありません。私はそれを完全に忘れました...ありがとう –

関連する問題