问题
I am a Mercurial user, and I am confused about the behaviour of remote branches. I have a remote branch origin/dev, and I want to replicate it on a local branche dev. What I would like is that:
- whenever I
git pull, changes toorigin/devare merged intodev - whenever I
git push, changes todevare merged intoorigin/dev
So I created a tracking branch with
git branch --track dev origin/dev
which, to the best of my knowledge, should do exactly what I need.
Still, I was working on a feature branch and issued a git pull. When I later issued git checkout dev I received the puzzling message
Your branch is behind 'origin/master_dev' by 2 commits, and can be fast-forwarded.
So it seems that my local branch was not updated after all. Is there a way to have the branch updated to the remote one whenever I pull and I am not currently in that branch? If not, am I correct that git merge (without any arguments) on branch dev is enough to restore the situation?
回答1:
The command git pull fetches updates from all remote branches (i.e, updates all the remote tracking branches). But merges only the current branch. This is a default behavior of git pull when no argument passed.
As you were on a diff branch when you git pull, it just updated the remote tracking branch for dev. Now git merge would be enough to update your local branch dev.
来源:https://stackoverflow.com/questions/11666286/git-tracking-remote-branches