1. ホーム
  2. git

[解決済み] Git Diff と Beyond Compare

2022-09-17 04:10:39

質問

差分ツールとして Beyond Compare 3 を git で起動することに成功しましたが、差分を取るときに、比較対象のファイルが読み込まれません。 最新バージョンのファイルだけが読み込まれ、他には何もないため、Beyond Compare の右ペインには何も表示されません。

私は Cygwin で git 1.6.3.1 を Beyond Compare 3 と一緒に動かしています。 ウェブサイトのサポート部分で提案されているように、このようなスクリプトで Beyond Compare をセットアップしました。

#!/bin/sh  
# diff is called by git with 7 parameters:  
# path old-file old-hex old-mode new-file new-hex new-mode  
"path_to_bc3_executable" "$2" "$5" | cat

この問題に遭遇した方、解決策をご存知の方はいらっしゃいますか?

編集してください。

私はVonCによる提案に従いましたが、私はまだ前と全く同じ問題を抱えています。私はGitにちょっと新しいので、おそらく私は正しくdiffを使用していないでしょう。

たとえば、私はこのようなコマンドでファイルの diff を見ようとしています。

git diff main.css

Beyond Compareを開くと、左ペインに現在のmain.cssが表示されるだけで、右ペインには何も表示されません。 私は、左ペインの現在の main.css を HEAD と比較して、基本的に私が最後にコミットしたものを見たいと思います。

私のgit-diff-wrapper.shはこのような感じです。

#!/bin/sh  
# diff is called by git with 7 parameters:  
# path old-file old-hex old-mode new-file new-hex new-mode  
"c:/Program Files/Beyond Compare 3/BCompare.exe" "$2" "$5" | cat

私のgitの設定は、Diffの場合はこんな感じです。

[diff]  
external = c:/cygwin/bin/git-diff-wrapper.sh

どのように解決するのですか?

余分なラッパー .sh ファイルは使っていません。私の環境は、Windows XP、git 1.7.1 on cygwin、Beyond Compare 3 です。以下は私の .git/config ファイルです。

[diff]
    tool = bc3
[difftool]
    prompt = false
[difftool "bc3"]
    #use cygpath to transform cygwin path $LOCAL (something like /tmp/U5VvP1_abc) to windows path, because bc3 is a windows software
    cmd = \"c:/program files/beyond compare 3/bcomp.exe\" "$(cygpath -w $LOCAL)" "$REMOTE"
[merge]
    tool = bc3
[mergetool]
    prompt = false
[mergetool "bc3"]
    #trustExitCode = true
    cmd = \"c:/program files/beyond compare 3/bcomp.exe\" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"

次に $ git difftool を使って比較し $ git mergetool を使ってマージします。

について trustExitCode : カスタムマージコマンドについて、マージが成功したかどうか判断するために、マージコマンドの終了コードを使用できるかどうか指定する。これが true に設定されていない場合、マージ ターゲット ファイルのタイムスタンプがチェックされ、ファイルが更新されていればマージは成功したものとみなされます。