Is there a GUI interface for git?
Yes and no. For Windows user there is no TortoiseSVN like integration (and no kde kio plugin either). However, for editing, moving, copying, deleting files you use your $TOOLS (No need for "git mv" etc.). When you have done, you use "git diff", "git status" and decide what to do with the changes.
There are some gui tools listed on
Git - Fast Version Control System * gitk: visualizes history of selected or all branches, diffs, search ... a must have. I heavy use that!
* "git gui" comes with the git-core package. A simple GUI written in TK. You can review changes, diff, add, commit, push, pull. Can't say much about it since I don't use it.
The command line tools are very comfortable. All output is paged and optional in ANSI color. Also git-core comes with a bash completion setup:
"git di<tab> <tab><tab>svn/tr<tab>"
Finally there are web gui ... recently I saw a git in trac somewhere ...
Is there a visual interface for pre-merge operations and post-merge diff visualization?
pre-merge I'd like to say thats "git diff --stat svn/trunk", "git log .." or use gitk to find out whats new. If you do "git remote update" ("svn up") that does not change any of your local stuff! You decide what you want to go into your branch.
"git merge" offers different strategies: resolve, recursive, octopus, ours. The first one is the safe one, only performs if there are no conflicts. But usually the defaults works fine.
When there are conflicts, "git mergetool" guides you though the files and starts your 3diff editor on each.
If the merge is a mess, you can undo everything ... lets say before merging there are many possibilities you can do:
* make a snapshot including local changes with "git stash"
* make a backup of your branch "git branch sd1100_trunk.bak"
* make a copy of the working dir with "git clone" and play in a 100% sandbox. When the result are fine, "git push" it back to the origin.
* have a look, which "features" are not in your branch, yet: "git cherry -v HEAD svn/trunk"
Well, a "post-merge", when commited, is finally "git show", "git log" ... etc.
Instead merging, git offers:
* git cherry-pick
* git rebase
That's stuff for another lesson