LinBox GIT tutorial

Overall principles

  • You work in your branch
  • If you want to use other people's work, take it from their branches
  • If you want everybody to use your modifications, ask the dictator to put them in the master branch

Get your local copy of LinBox-2.0

* First recovery of the repository (replace dumas by your svn/git name):

> git clone ssh://dumas@linalg.org/linbox.git
  • This creates a "linbox" directory under the current directory.

* Local creation of the user's branch for the server's master branch:

> cd linbox
> git branch --track jg/master origin/master

* Show your local copies of the existing branches, plus the ones stored on the server (prefixed by "origin"), the branch marked by a star is the branch corresponding to the files you currently have:

> git branch -a
* master
  jg/master
  origin/HEAD
  origin/master
  origin/pernet/master
  ...

* You cannot work in the master branch (only the LinBox dictator-for-life can), so you switch to your branch:

> git checkout jg/master
Switched to branch "jg/master"
> git branch -a
  master
* jg/master
  origin/HEAD
  origin/master
  origin/pernet/master
  ...

* Copy your branch to the server so that it will be backed up on the server:

> git push origin jg/master
* [new branch]          jg/master  --> jg/master

Common Usage

* Recover the changes in your working branch from the server:

> git pull

* Commit all your local changes to your local working branch:

> git commit -a

* Backup your commited changes to the server:

> git push

* What is your working branch status:

> git status

* Show the modifications made to a file:

> git log file
commit f47e2020cee0ae8abe665cc6db638988a4277b2b
Author: U-Cyclone\jgdumas <Jean-Guillaume.Dumas@imag.fr>
Date:   Fri Dec 11 14:17:48 2009 +0100

    My very important modification

* Show the differences between a file and a specific commit (you just need the first 6 digits of the hash):

> git diff f47e20 file
diff --git a/file b/file
index 198bd53..7f5bb40

- ...
+ ...

Updates

* Recover locally the modifications of the different branches:

> git fetch

* See what modifications have been made:

> git log --all

* Apply the modifications of a given branch to your local working branch:

> git merge origin/pernet/master

Push your modifications to the master branch

* Open a new ticket

  • with a patch
  • with a commit id and local branch name
  • with a local branch

Anonymous recovery

> git clone git://linalg.org/home/www/var/git/linbox.git

References

Equivalences between SVN and GIT http://git.or.cz/course/svn.html

Git mini how-to http://pacific.mpi-cbg.de/wiki/index.php/Git_mini_howto