Git

From VideoLAN Wiki
Revision as of 22:34, 12 April 2007 by Pdherbemont (talk | contribs)
Jump to navigation Jump to search

Basic Git usage

Getting VLC source code via Git

git clone git://git.videolan.org/vlc.git

You can also browse the sources via gitweb.


Configure your local git repository

Tell git your name. (used by mostly by git-commit)

$ git repo-config user.name "Your Name"
$ git repo-config user.email "me@example.com"


List the local branch

You can now list your local branch by doing

$ git branch

which should ouput

$ git branch
* master


Commit

Now you can start to work on your tree. As soon as you feel you've reached a step in developement you can commit locally your work by

$ git commit -a

or

$ git commit <specific files>


List your commits

$ git log


Keeping your local working branch in sync

$ git fetch origin
$ git rebase origin

voilà! Your commit will be re-applied on top of the origin (the svn trunk).

Submitting patches to the vlc-devel

If you have been developing on vlc locally and (still) don't have write access, you can submit all your commit in one shot using:

$ git format-patch -o out origin

which will produce the patches for each local commit in the directory "out". You can also use the git-imap-send command:

$ git format-patch --stdout --attach -n origin | git-imap-send

which will directly produces the emails and store them in a imap mail box, provided that you have properly set up git-imap-send.

Advanced usage

Creating a secondary local branch

If you want to work on a specific project that could require a branch of the trunk, create a local branch of the current branch by doing:

$ git branch mywork

and to actually use it do:

$ git checkout mywork

Then do some commit on it... And you can go back to your original master branch by doing:

$ git checkout master

Revert your non-committed local changes

$ git checkout -f

Undo commit

This will undo the last commit

$ git reset HEAD^

which is the same as

$ git reset master^

(if you are checked-out copy of your tree is master) And also the same as

$ git reset a44a594 # note that there is no need to use the full sha id

if you have:

$ git log
commit ff7004b70fd239e4120deb160e2991bd5237b8df
Author: fkuehne <fkuehne>
Date:   Thu Apr 12 18:44:47 2007 +0000
    * added sanity flags for future darwin releases and potentionally fixed OSX 
commit a44a594898f981a145cfcace5f16f8973f9eb46f
Author: jb <jb>
Date:   Thu Apr 12 16:24:49 2007 +0000
    Qt4 - MouseWheel support - patch by Sergey Volk.



Documentation about git