Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
git:quick-start-guide [2009/04/22 20:56]
andrei added note about using rebase by default for master
git:quick-start-guide [2011/02/23 10:11] (current)
ibc Added section "Local GIT settings: global and per-repository settings"
Line 14: Line 14:
  
   * http://git.sip-router.org/cgi-bin/gitweb.cgi   * http://git.sip-router.org/cgi-bin/gitweb.cgi
 +
 +
 +===== 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 ===== ===== First config options =====
    
Line 25: Line 34:
 Some other recommended git config setting: Some other recommended git config setting:
  
-   * include summaries of merged commits in commit merge messages (a MUST)+   * include summaries of merged commits in commit merge messages (a **MUST**)
 <code> <code>
 git config --global merge.log true git config --global merge.log true
Line 34: Line 43:
 git config --global branch.autosetupmerge always git config --global branch.autosetupmerge always
 </code> </code>
-   * 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.+   * 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**)
 <code> <code>
 git config branch.master.rebase true git config branch.master.rebase true
 </code> </code>
-   * 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).+   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). 
 +<code> 
 +git config branch.autosetuprebase always  # or remote 
 +</code> 
 +   * (**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).
 <code> <code>
-# recommended _only_ if you do a _lot_ of merges between public branches +_not_ recommended, use _only_ if you do a _lot_ of merges between public 
-# (see Note: above), otherwise you're better off without it in the config+branches (see Note: above), otherwise you're better off without it
 # git config branch.master.mergeoptions  "--no-ff" # git config branch.master.mergeoptions  "--no-ff"
 </code> </code>

Navigation

Wiki

Other

QR Code
QR Code git:quick-start-guide (generated for current page)