This is an old revision of the document!
Table of Contents
git
git is a distributed version control system originally written by Linus Torvalds. The version control metadata is distributed, so every clone is a complete history of the source code. Compare this with centralized systems like SVN or CVS where, if the central repository burns down, everything is lost!
- Official homepage: http://git-scm.com
- Pro Git book: http://progit.org/book
- Cheat sheet: http://cheat.errtheblog.com/s/git
- git ready: http://www.gitready.com
Installing git
Migrating from SVN
Install git-svn
# aptitude install git-svn
Create a temp git repo
This is where we will initially copy the SVN repository.
$ mkdir beca_lims_portal_temp $ cd beca_lims_portal_temp
Initialize temp git repo
$ git svn init https://172.26.17.2/svn/beca_lims_portal/trunk/ --no-metadata
Map SVN users to git
Create an authors file
/home/aorth/svnauthors:
mnorling = Martin Norling <m.norling@cgiar.org> aorth = Alan Orth <a.orth@cgiar.org> root = Alan Orth <a.orth@cgiar.org> akihara = Absolomon Kihara <a.kihara@cgiar.org>
Tell git about your authors
$ git config svn.authorsfile ~/svnauthors
Populate the temp git repo
$ git svn fetch
Clone from the temp repo
When doing a normal git clone it will take everything we want from the temporary repository, while leaving behind all the SVN cruft that was there to support the git-svn stuff.
$ cd .. $ git clone beca_lims_portal_temp beca_lims_portal
See the commit history
You should see all your authors mapped from the SVN repository:
$ cd beca_lims_portal $ git log
Tagging
Tagging a past version
Specify a certain commit by giving the commit's checksum (or the abbreviated checksum):
git tag -a v0.1 8e11e65
Pushing tags to origin
By default git push doesn't send tags to the remote origin; you have to tell it to do it manually.
Certain tag
$ git push origin v0.1
All tags
Push all tags which are not already on the remote origin:
$ git push origin --tags
Configuration
~/.gitconfig
Set a default editor
The editor is used when you have to enter a commit message.
[core]
editor = vim
Colorize git output
<file>[color] ui = auto [color "branch"] current = yellow reverse local = yellow remote = green [color "diff"] meta = yellow bold frag = magenta bold old = red bold new = green bold [color "status"] added = yellow changed = green untracked = cyan</code>
