Basic usage of git-svn

This is a small guide I wrote for my own convenience when I recently was converting an SVN repository to a Git repository. I’ve published it here so that I can easily look up the things I need to remember..

I’ve found most of these examples in the excellent official git-svn documentation.

Cloning the SVN repository

git svn clone <repo-url>

Adding another remote

git remote add <remote-name> <remote-url>

Fetching and rebasing changes from SVN

git svn fetch && git svn rebase

Note that the git-svn documentation has a section discussing rebase vs pull/merge:

Prefer to use git svn rebase or git rebase, rather than git pull or git merge to synchronize unintegrated commits with a git svn branch. Doing so will keep the history of unintegrated commits linear with respect to the upstream SVN repository and allow the use of the preferred git svn dcommit subcommand to push unintegrated commits back into SVN.

Doing work and pushing to SVN

git add <file>
git commit -m "<commit message>"
git svn dcommit # This will push your changes to the SVN repository

Pushing to other remotes

git push <remote-name>

See what will be pushed to SVN

git diff git-svn HEAD # Assuming your remote SVN branch is called git-svn
git svn dcommit --dry-run