I tried using kaleidoscope for git difftool to compare two branches.

So I installed ksdiff and setted it like follow in my .gitconfig

     tool = kaleidoscope
 [difftool "kaleidoscope"]
     cmd = ksdiff --changeset $(cd $(dirname "$LOCAL") && pwd)/$(basename "$LOCAL") $(cd $(dirname "$MERGED") && pwd)/$(basename "$MERGED")

when running

git difftool myBranch otherBranch 

I Receive the error cannot use duplicate files within the same file list


I found a way to configure it. In Kaleidoscope itself under Kaleidoscope menu there is a link called Integration which open a configuration window for several versioning solutions.

Kaleidoscope "Integration" configuration window

After installing ksdiff clicking on Configure button will add the following lines to your .gitconfig file.

    tool = Kaleidoscope
[difftool "Kaleidoscope"]
  cmd = ksdiff --partial-changeset --relative-path \"$MERGED\" -- \"$LOCAL\" \"$REMOTE\"
    tool = Kaleidoscope
[mergetool "Kaleidoscope"]
  cmd = ksdiff --merge --output \"$MERGED\" --base \"$BASE\" -- \"$LOCAL\" --snapshot \"$REMOTE\" --snapshot
  trustExitCode = true

then running the following command will open successively each different file

git difftool myBranch otherBranch  -y -t Kaleidoscope



  • -y stands to avoid prompting for asking if we want to use Kaleidoscope for difftool for each file. Default answer is "yes".
  • -t Kaleidoscope is optionnal here as default difftool is already set to Kaleidoscope in our .gitconfig file.
  • 1
    In my case I also had to add [merge] tool = Kaleidoscope to my .gitconfig. – stigi Feb 18 '15 at 19:44
  • You can also use [difftool] prompt = false (and same for [mergetool]) in .gitconfig to always "avoid prompting for asking if we want to use Kaleidoscope for difftool for each file". – Samuel Lindblom Mar 8 at 11:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.