Re: master and origin
From: Jakub Narebski <hidden>
Date: 2016-08-11 20:12:39
Paolo Ciarrocchi wrote:
On 10/29/06, Jakub Narebski [off-list ref] wrote:
[...]
quoted
pull = fetch + merge, so if you pull when you are on your local 'master' branch (and 'master' branch is first in the .git/remotes/origin file I think) you would fetch remote 'master' into local 'origin' and merge what you have in 'origin' into your 'master' (or merge remote 'master' into your local 'master' if you want to think like that).So in this case, there is a difference between doing my local development under master or myownlocalbranch. Right? I mean, if I do my own development under master and I pull, the master branch will include origin and my local changes. Corret? While if I work in my local branch the datas are not modified with a pull, because pull will update only the local copy of the remote branch. Correct?
To be more exact (sorry for the confusion) "git pull" means first do
the "git fetch", i.e. update local 'tracking' branches with the contents
of remote branches. For ordinary clone this means:
remote (origin) | local
------------------+------------------
master | origin
next | next
... | ...
For --use-separate-remote this means
remote (origin) | local
-------------------+-------------------
master | refs/remotes/origin/master
next | refs/remotes/origin/next
... | ...
Then it does "merge". It takes the remote branch from first Pull: line in
remotes/origin file, or first in remote.origin.fetch configuration variable,
and merges it with _current_ branch.
So if you always work on local branches, and newer want to merge
automatically, you probably should use "git fetch" for fetching changes.
What is not obvious (and is PITA for first-timers) that to merge
some <sidebranch> into your <branch>, it is simplest to first switch
to <branch> using
git checkout <branch>
and then merge <sidebranch> using
git pull . <sidebranch>
(where '.' means local repository).
HTH
--
Jakub Narebski