git-tutorial
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
git-tutorial [2012/11/03 23:28] – smilauer | git-tutorial [2017/11/01 09:08] (current) – bp | ||
---|---|---|---|
Line 18: | Line 18: | ||
git config --global user.email " | git config --global user.email " | ||
- | ====== Git Basics ====== | + | ====== Git Basics |
Our two main branches are: | Our two main branches are: | ||
master | master | ||
- | | + | |
- | The master branch is stable | + | The master branch is used to our development, |
==== Local and remote repositories ==== | ==== Local and remote repositories ==== | ||
Line 40: | Line 40: | ||
If you want to get a copy of an existing Git repository — for example, a project you’d like to contribute to — the command you need is git clone. | If you want to get a copy of an existing Git repository — for example, a project you’d like to contribute to — the command you need is git clone. | ||
- | $ git clone http://www.oofem.org/git/ | + | $ git clone https://github.com/oofem/ |
Line 85: | Line 85: | ||
==== Viewing the Commit History ==== | ==== Viewing the Commit History ==== | ||
- | You can show the history of commits in the current branch using gil log command | + | You can show the history of commits in the current branch using git log command |
git log | git log | ||
Line 102: | Line 102: | ||
To track remote branch, for example the develop branch on origin, use | To track remote branch, for example the develop branch on origin, use | ||
- | $ git checkout -b develop | + | $ git checkout -b stable |
If you have Git version 1.6.2 or later, you can also use the --track shorthand: | If you have Git version 1.6.2 or later, you can also use the --track shorthand: | ||
- | $ git checkout --track origin/develop | + | $ git checkout --track origin/stable |
You can switch between branches using git checkout < | You can switch between branches using git checkout < | ||
- | $ git checkout | + | $ git checkout |
- | If you now call git branch, you will see that a new branch named newfeature | + | If you now call git branch, you will see that a new branch named stable |
$ git branch | $ git branch | ||
master | master | ||
- | * develop | + | * stable |
| | ||
To synchronize your work, you run | To synchronize your work, you run | ||
Line 118: | Line 118: | ||
- | ====== Contributing to OOFEM ====== | + | ====== Contributing to OOFEM - Practical workflow |
- | Contributing | + | For people without write permissions |
- | **Before contributing, | + | You can read more about [[https:// |
- | First, you’ll probably want to clone the main repository, create | + | Typically, one have to create a fork, or copy, of the repository. Forks let you make changes to a project without affecting |
+ | * Read more about [[https:// | ||
+ | * [[https:// | ||
- | Clone reference | + | If you have write access to the repository, you can also create branch directly within oofem repository. This should be reserved |
+ | * [[https:// | ||
- | $ git clone http:// | ||
- | $ cd oofem.git | ||
- | We need also ''develop'' | + | After you have created a pull request, you can ask a specific person to review the changes you've proposed. |
+ | In OOFEM, these people ('lieutenants') are in charge of a specific subsystem of the project and they merge in all changes related to that subsystem and push them to the reference (blessed) repository that everyone can clone from again. | ||
- | $ git checkout -b develop origin/ | + | **Before contributing, please |
- | + | ||
- | Normally, we do not want to modify '' | + | |
- | $ git checkout -b featureA | + | |
- | $ (work) | + | |
- | + | ||
- | Locally modified files need to be uploaded to local server. Use option '' | + | |
- | + | ||
- | $ git commit -a | + | |
- | $ (work) | + | |
- | $ git commit -a | + | |
- | + | ||
- | :!: **It is stronlgly recommended to use '' | + | |
- | ** | + | |
- | + | ||
- | Now you have your commits that you want to send to the maintainers. You use git format-patch to generate the mbox-formatted files that you can e-mail — it turns each commit into an e-mail message with the first line of the commit message as the subject and the rest of the message plus the patch that the commit introduces as the body. | + | |
- | + | ||
- | $ git format-patch -M origin/ | + | |
- | 0001-add-limit-to-log-function.patch | + | |
- | 0002-changed-log-output-to-30-from-25.patch | + | |
- | + | ||
- | The format-patch command prints out the names of the patch files it creates. The -M switch tells Git to look for renames. | + | |
- | To e-mail this to a maintainers, | + | |
- | + | ||
- | For those, who have write access to remote server, the local repository can be uploaded to remote server. Without any options, all branches, where local_name=remote_name will be pushed | + | |
- | + | ||
- | $ git push | + | |
- | + | ||
- | To be sure pushing only '' | + | |
- | + | ||
- | $ git push origin develop | + | |
- | ===== Maintainers ===== | ||
- | FIXME Here it would be nice to mention all lieutenants, | ||
- | |||
====== Links ====== | ====== Links ====== | ||
- | * Online version of [[http://git-scm.com/book|Git book]]. Higly recommended! | + | * Online version of [[https://help.github.com/|GitHub help]]. Higly recommended! |
- | * Git-SVN | + | * Online version of [[http:// |
git-tutorial.txt · Last modified: 2017/11/01 09:08 by bp