Difference between revisions of "Git"

From VideoLAN Wiki
Jump to navigation Jump to search
(For SVN user cogito tutorial)
(Document some a bit more advanced commands.)
Line 1: Line 1:
 +
= Basic Git usage =
 
== Getting VLC source code via Git ==
 
== Getting VLC source code via Git ==
 
  git clone git://git.videolan.org/vlc.git
 
  git clone git://git.videolan.org/vlc.git
Line 34: Line 35:
 
voilà! Your commit will be re-applied on top of the origin (the svn trunk).
 
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 [http://www.kernel.org/pub/software/scm/git/docs/git-imap-send.html 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 [http://www.kernel.org/pub/software/scm/git/docs/git-imap-send.html git-imap-send].
  
 +
= Advanced usage =
 
== Creating a secondary local branch ==
 
== 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:
 
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:
Line 43: Line 52:
 
Then do some commit on it... And you can go back to your original master branch by doing:
 
Then do some commit on it... And you can go back to your original master branch by doing:
 
  $ git checkout master
 
  $ 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
 +
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.
 +
  
  
== 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 [http://www.kernel.org/pub/software/scm/git/docs/git-imap-send.html 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 [http://www.kernel.org/pub/software/scm/git/docs/git-imap-send.html git-imap-send].
 
  
 
== Documentation about git ==
 
== Documentation about git ==

Revision as of 21:53, 12 April 2007

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

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