Git-svn

From Git SCM Wiki
(Difference between revisions)
Jump to: navigation, search
(diff added)
Line 14: Line 14:
 
=== commit to local Git ===
 
=== commit to local Git ===
 
Git automatically tracks contents and therefor automatically detects all changes done with file browsers, programming tools etc.
 
Git automatically tracks contents and therefor automatically detects all changes done with file browsers, programming tools etc.
 +
git diff
 
  git add --all
 
  git add --all
 +
git diff --cached
 
  git commit -m "whatebber"
 
  git commit -m "whatebber"
  

Revision as of 07:48, 19 December 2012

This tutorial collects information for users of git as svn client, using git-svn. Please consider reading GitSvnCrashCourse, and the git-svn cheatsheet. As Git is distributed, commits (aka change sets) are referenced by hashes instead of svn's serial version numbers. Git tracks contents, not files or directories. Consider to use a real svn client to rename directories, as git-svn produces a lot of renames in svn, instead of one like the original.

Contents


checkout / clone, log

git svn clone -r 400:HEAD https://mysvnsrv.org/rep/trunk folder # choose a recent commit
git log -5
git status

Create a .gitignore file on the toplevel to replicate svn's ignore properties.

echo "folder/or/file/to/ignore" > .gitignore

commit

commit to local Git

Git automatically tracks contents and therefor automatically detects all changes done with file browsers, programming tools etc.

git diff
git add --all
git diff --cached
git commit -m "whatebber"

commit to remote SVN

To see what is going to be committed one can choose the following options.

gitk git-svn..
gitk
git log remotes/git-svn.. --oneline
git svn dcommit --dry-run

To really commit

git svn dcommit

undo changes

Undo (backout, revert) changes and commits is done with standard git commands.

Things already committed to svn can be reverted:

git revert <hash>
git svn dcommit

Things in the working tree can be reset (reverted) to what is checked in:

git reset --hard

workflow with local fix/feature branch

git svn clone https://mysvnsrv.org/rep
git checkout -b bugfix-id-123
<hack, hack, hack>
git add --all
git commit -m "fixed issue 123"
git checkout master
git svn rebase
git merge bugfix-id-123
git svn dcommit

Some links

Personal tools