Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3



Note

This page is a work in progress.  If you find an error or feel that you can make a contribution, please edit the page or – if you are not comfortable editing page – press the "M" key to leave a comment at the bottom with suggested changes/additions.  Thank you! (note: you must be logged into the wiki to edit pages or add comments)

Most OpenMRS developers are comfortable with subversion and haven't had as much experience with Git.  While there are a number of good tutorials on Git, we wanted to provide a quick reference for our developers.

...

Basic Tasks 

Help

Git

SVN

git help______________

svn help{{______________

View content of remote repository (svn list)

Git

SVN

Browse on github______________

svn list http://svn.openmrs.org/openmrs/trunk/ (http://svn.openmrs.org/openmrs/trunk/*)______________

You can browse files in your local repository with git show or git ls-files.

...

Git

SVN

git clone git@github.com:username/openmrs-module-mymodule.git_____

svn checkout http://svn.openmrs.org/openmrs-modules/mymodule mymodule_______

If there is a remote branch that you want to add to your local repository, use the command:

git checkout --track origin/branchname

Get updates

Git

SVN

git pull______________ fetch (updates your local copy of a remote branch)
or
git pull (goes a git fetch + git merge)

svn update______________

Compare working copy to head (what have I changed?)

Git

SVN

git xxxdiff______________

svn diff______________

Add new file(s)/folder(s) to version control

Git

SVN

git add myfile.txt______________

svn add myfile.txt______________

Delete file(s)/folder(s)

Git

SVN

rm myfile.txt
 
To remove from Git's index & add to Git ignore:
git rm --cached myfile.txt

To remove from Git's index (doesn't delete file):
git rm myfile.txt______________

svn rm myfile.txt______________

Ignore certain file(s)/folder(s)

Git

SVN

.gitignore______________

svn propset svn:ignore -F .svnignore .______________

Commit changes with comment (all or some of changes in working copy)

Git

SVN

git commit -m "comment"______________
git push
Note: It is better to use the command "git commit -a --signoff", which will open an editor using which you should write the commit comment.
This commit would be used as an email message and a subject and the format goes something like:
* First line is used as the subject
* Second line onwards is used as the body of the message
The --signoff option add the text:
"Signed-off-by: My Name <myemail@example.com>"
This signoff statement becomes part of the comment and will be used to track the changes done and also the copyright owners of the changes

svn commit -m "comment"______________

Get basic information about working copy (svn info)

Git

SVN

cat .git/config ______________

svn info______________

Revert changes (all or some changes in working copy)

Git

SVN

git xxxreset --hard HEAD^______________

svn xxxrevert MyCode.java
or to revert the entire local copy:
svn revert --depth=infinity .______________

Create a patch (diff of working copy from head)

Git

SVN

git xxxformat-patch master --stdout > my_change.patch______________

svn xxx______________

Apply a patch

Git

SVN

git xxxapply --stat my_change.patch______________ svn xxx

patch -p0 -i my_change.patch______________

Resolve conflicts

Git

SVN

git xxx______________

svn xxx______________

Create a branch (e.g., space for new module)

Git

SVN

git xxxbranch branchname
git checkout branchname
or, as a single step:
git checkout -b branchname______________

svn xxx__copy trunk branches/branchname
or to create an empty branch:
svn mkdir branches/branchname____________

Close a branch

Git

SVN

git xxxbranch -d branchname______________

svn xxxdel branches/branchname______________

Tag a release

Git

SVN

git xxxtag -a tagname -m "Version tagname"______________

svn xxxcopy trunk tags/tagname______________

You can list out existing tags with git tag or search for a specific tag with git tag -l 1.9.*

Advanced Tasks

Switch working copy to new repository location

Git

SVN

git xxxgit remote set-url origin https://github.com/openmrs/openmrs-module-newhome.git______________

svn xxxswitch https://svn.openmrs.org/openmrs-modules/newhome______________

Detach working copy

Git

SVN

git xxxarchive master | tar -x -C newlocation______________

svn export newlocation______________

Blame (show annotations / show who changed what line in what commit)

Git

SVN

git xxxblame filename______________

svn xxxblame filename______________

Show history

Git

SVN

git log______________

svn log______________

Switch to earlier revision

Git

SVN

git xxx______________

svn xxx______________

Correct/change old commit message

Git

SVN

git xxx______________

svn xxx______________

See Also