简体   繁体   中英

Git merge using Beyond Compare when resolving merge conflicts caused by stash pop: files not found

I am trying to unstash some files, one of the files causes merge conflicts, which I am trying to resolve using Beyond Compare. I am working on Windows 7.

Here's what I did:

  • I applied the stash, which reported errors due to a merge conflict.
  • I launched BeyondCompare using git mergetool
  • My diff tool launched, but did not find these files "*whatever*_LOCAL_21148.tex" "*whatever*_BASE_21148.tex" etc. (and they actually don't exist either). But it creates three new files named .merge_file_*some_hex_number* which as far as I can see contain the base, local, and remote versions.

Can someone point me to what's going wrong here?

My .gitconfig:

[core]
    autocrlf = true
fileeditor
    eol = native
[user]
    name = David Wright
    email = 
[diff]
    tool = bc
    guitool = meld
[difftool "meld"]
    cmd = "C:/Program Files (x86)/Meld/Meld.exe /\"$LOCAL/\" /\"$REMOTE/\" "
    prompt = false
    path = C:/Program Files (x86)/Meld/Meld.exe
[merge]
    tool = bc
[mergetool "meld"]
    cmd = C:/Program Files (x86)/Meld/Meld.exe /\"$LOCAL/\" /\"$BASE/\" /\"$REMOTE/\" --output=/\"$MERGED/\" --auto-merge
    path = C:/Program Files (x86)/Meld/Meld.exe
[difftool "sourcetree"]
    cmd = 'C:/Program Files (x86)/Beyond Compare 4/BComp.exe' \"$LOCAL\" \"$REMOTE\"
[mergetool "sourcetree"]
    cmd = 'C:/Program Files (x86)/Beyond Compare 4/BComp.exe' \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"
    trustExitCode = true
[filter "lfs"]
    clean = git-lfs clean -- %f
    smudge = git-lfs smudge -- %f
    required = true
[difftool "kdiff3"]
    path = C:/Program Files (x86)/KDiff3/kdiff3.exe
[http]
    sslVerify = false
[difftool "bc"]
    path = C:\\Program Files\\BeyondCompare\\BCompare.exe
[mergetool "bc"]
    path = C:\\Program Files\\BeyondCompare\\BCompare.exe

Replace bcompare.exe with bcomp.exe.

The executable bcomp.exe opens every diff and merge in a separate helper process, allowing version control to detect when the comparison is complete.

If you use bcompare.exe, all comparisons are opened in a single process. If bcompare.exe is already running when you launch a new comparison, the comparison is passed to the existing process and the new process exits. This causes version control to think the diff/merge is complete prematurely.

To configure Beyond Compare as the diff and merge tool for Git on Windows:

git config --global diff.tool bc
git config --global difftool.bc.path "c:/Program Files/Beyond Compare 4/bcomp.exe"
git config --global merge.tool bc
git config --global mergetool.bc.path "c:/Program Files/Beyond Compare 4/bcomp.exe"

The contents of .gitconfig after using the above commands:

[diff]
    tool = bc
[difftool "bc"]
    path = c:/Program Files/Beyond Compare 4/bcomp.exe
[merge]
    tool = bc
[mergetool "bc"]
    path = c:/Program Files/Beyond Compare 4/bcomp.exe

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM