Usually to interact between a remote Subversion repository and a local Git
repository you have to be on the local master branch and run:
git svn dcommitinstead ofgit pushgit svn rebaseinstead ofgit pull --rebase
There is no equivalent to git pull because Subversion and Git handle merges
differently, so to prevent Subversion committers saw merge commits a rebase
is mandatory.
You can get the best of Git working with Subversion interacting between the Git local repository and the local working directory.

So you can:
- preparing to commit only the part of a file you want, by using
git add --patch - rewriting commit history, by using
git rebase --interactiveand the variouspick,reword,edit,squash,fixup - extremely quickly create new branches
- including in the current branch a single commit made on another branch, by using
git cherry-pick - using
git bisectto find which commit caused a particular bug - temporarily parking last changes to face an emergency, by using
git stash save my_current_issue
and do all the other stuff you can do locally that make you love Git.
I want to stress about using local branches to your benefit only and not to collaborate with other committers. This means you have to merge locally your branches into master before interacting with remote subversion repository. In this way no one could see your merge commits.


I’m very proud of this work because I have significantly improved the language
support in 