Git Diff with Beyond Compare

前端 未结 17 1980
醉酒成梦
醉酒成梦 2020-11-30 16:39

I have succeeded in getting git to start Beyond Compare 3 as a diff tool however, when I do a diff, the file I am comparing against is not being loaded. Only the latest ver

相关标签:
17条回答
  • 2020-11-30 16:57

    Run these commands for Beyond Compare 3(if the BCompare.exe path is different in your system, please replace it according to yours):

    git config --global diff.tool bc3
    git config --global difftool.bc3.cmd "\"c:/program files (x86)/beyond compare 3/BCompare.exe\" \"$LOCAL\" \"$REMOTE\""
    git config --global difftool.prompt false
    

    Then use git difftool

    0 讨论(0)
  • 2020-11-30 16:59

    Windows 10, Git v2.13.2

    My .gitconfig. Remember to add escape character for '\' and '"'.

    [diff]
        tool = bc4
    [difftool]
        prompt = false
    [difftool "bc4"]
        cmd = \"C:\\Program Files\\Beyond Compare 4\\BCompare.exe\" \"$LOCAL\" \"$REMOTE\"
    [merge]
        tool = bc4
    [mergetool "bc4"]
        path = C:\\Program Files\\Beyond Compare 4\\BCompare.exe
    

    You may reference setting up beyond compare as difftool for using git commands to config it.

    0 讨论(0)
  • 2020-11-30 17:00

    I don't use extra wrapper .sh files. My environment is Windows XP, git 1.7.1 on cygwin, and Beyond Compare 3. Following is my .git/config file.

    [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"
    

    Then, I use $ git difftool to compare and $ git mergetool to merge.

    About trustExitCode: For a custom merge command, specify whether the exit code of the merge command can be used to determine whether the merge was successful. If this is not set to true then the merge target file timestamp is checked and the merge assumed to have been successful if the file has been updated, otherwise the user is prompted to indicate the success of the merge.

    0 讨论(0)
  • 2020-11-30 17:03

    For whatever reason, for me, the tmp file created by git diff was being deleted before it opened in beyond compare. I had to copy it out to another location first.

    cp -r $2 "/cygdrive/c/temp$2"
    cygstart /cygdrive/c/Program\ Files\ \(x86\)/Beyond\ Compare\ 3/BCompare.exe "C:/temp$2" "$5"
    
    0 讨论(0)
  • 2020-11-30 17:07

    Please notice you make a wrong path of $2. because you are under Cygwin but BC3 not, so you should specify a full path for it. such as "d:/cygwin$2"

    Please refer my git-diff-wrapper.sh here:

    $ cat ~/git-diff-wrapper.sh
    #!/bin/sh
    echo $2
    echo $5
    /cygdrive/c/Program\ Files\ \(x86\)/Beyond\ Compare\ 3/BCompare.exe "d:/programs/cygwin$2" "$5"
    

    Good luck.

    0 讨论(0)
  • 2020-11-30 17:08

    http://rubenlaguna.com/wp/2010/08/05/visual-difftool-cygwin-git/ has a solution that I adopted to work for BeyondCompare: http://gist.github.com/564573

    0 讨论(0)
提交回复
热议问题