I use emacs's magit for git stuff (the bulk of things) and emacs's ediff for most other things.
Good if you know emacs, but hard to recommend using it for someone who doesn't.
EDIT: Oh, one exotic utility that's useful for some rare cases, not really for interactive merging of code
wdiff for word-level diffing. Most code can reasonably be diffed on a line-by-line basis, but that's not true for some text formats, which can have very long lines. Human, natural language in text format, is one good example.