GIT Quick Start Guide

The document tries to collect useful information to make life easier working with the GIT repository of SIP Router Project.

GIT URLs

  • git://git.sip-router.org/sip-router - (read only)
  • http://git.sip-router.org/sip-router - (read only, slower, git://... recommended)
  • ssh://git.sip-router.org/sip-router - (read/write, developer account needed on git.sip-router.org)

Web interface

Local GIT settings: global and per-repository settings

GIT allows setting global configuration parameters by using the command git config –global. These settings are stored into $HOME/.gitconfig and are global for all our local GIT repositories.

git config without –global option must be executed in the root directory of a local GIT repository. Such settings are stored in .git/config within the repository and are just specific for current GIT repository. They take preference over global settings (in case the same configuration parameter exists in both $HOME/.gitconfig and REPOSITORY/.git/config).

First config options

  • Recommended git version: >= 1.5.6.1
  • First of all, set your name and email address:
git config --global user.name 'your_name'
git config --global user.email 'your email address'

Some other recommended git config setting:

  • include summaries of merged commits in commit merge messages (a MUST)
git config --global merge.log true
git config --global merge.summary true  # same as above, for older git versions
  • behave as if –track is added to every git-pull
git config --global branch.autosetupmerge always
  • by default perform a rebase instead of a merge when pulling into the local master branch (highly recommended, it gets rid of a lot of confusing merge origin/master messages). It's equivalent to adding –rebase to git pull command line. (recommended)
git config branch.master.rebase true
  • by default setup all new local branches to perform rebase (like above) when pull-ing (so that you don't have to run git config branch.<branchname>.rebase true for each of them).
git config branch.autosetuprebase always  # or remote
  • (not recommended) by default use –no-ff when merging into master (this means that a merge commit message will be generated for all merges; without it fast-forward merges will not generate a merge message). Note: –no-ff will generate merge logs even when updating master from origin (git pull origin master), which is not what you want. You should either use "--no-ff" by default like described below, but then make sure to add "–ff" every time you update your local master version (git pull –ff origin master), or you don't use it, but then always remember to add "--no-ff" when merging some other branch into master (e.g.: git merge –no-ff origin/foo).
# _not_ recommended, use _only_ if you do a _lot_ of merges between public
# branches (see Note: above), otherwise you're better off without it
# git config branch.master.mergeoptions  "--no-ff"

GIT commit into master howto

GIT merge into master howto


Navigation

Wiki

Other

Personal Tools