2012-07-26 149 views
7

我是一个Mercurial用户,我对远程分支机构的行为感到困惑。我有一个远程分支origin/dev,我想复制它在本地分支dev。我想的是:Git-跟踪远程分支机构

  • 每当我git pull,改变origin/dev合并为dev
  • 每当我git push,改变dev合并为origin/dev

所以我创建了一个跟踪分支与

git branch --track dev origin/dev 

其中,最好的m Ÿ知识,应该完全符合我的需要。

不过,我正在研究一个功能分支并发布了一个git pull。当我后来出具git checkout dev我收到了令人费解的消息

你分支的背后是“产地/ master_dev” 2个提交,可以快进。

因此,似乎我的本地分支终究没有更新。有没有办法让分支更新到远程的每当我拉,我目前不在该分支?如果没有,我纠正git merge(没有任何参数)分支开发足以恢复的情况?

+0

相关:[如何让现有的Git分支跟踪远程分支?](http://stackoverflow.com/q/520650/456814)。 – 2014-05-23 18:22:01

回答

5

命令git pull从所有远程分支获取更新(即更新所有远程跟踪分支)。但只合并当前分支。当没有参数传递时,这是默认行为git pull

当你在差异分支上时,你git pull,它只是更新了远程追踪分支dev。现在git merge就足以更新您的本地分支dev

+3

作为一个附注,[取和合并,不要拉](http://longair.net/blog/2009/04/16/git-fetch-and-merge/)。 – Shahbaz 2012-07-26 09:58:52

+0

Acutally我只是试图简单地合并,结果是致命的:没有提交指定和merge.defaultToUpstream没有设置。即使分支被创建为跟踪 – Andrea 2012-07-26 10:34:23

+1

行。为了让它工作,你可以这样做'git merge remote_name/branch_name'。在你的情况下,'git merge origin/master_dev'。 – 2012-07-26 10:53:00