2013-05-20 109 views
0

我有一个远程分支1.4为什么git pull会引入git fetch rebase不是的变化?

我与结果的git fetch origin

13b1449..51618fe 1.4 -> origin/1.4

然后我做了git rebase 13b1449

混帐回应Current branch 1.4 is up to date

然后我做了一个git pull origin 1.4它带来了3个文件。

我在做什么错误取&重新分配不更新我的分支与它从远程服务器获取什么?

回答

2

13b1449是当地的哈希提交。 “远程”提交是51618fe - 您作为origin/v1.4的头部提交的提交。

您的rebase命令没有任何影响(您要求git在当前提交时重定位),另一方面pull正确地将您的本地分支向前移动。

为了避免混淆,而不是使用哈希值,你可以使用分支名称:

git rebase origin/v1.4 

git有几个选择,当你拉应用的rebase而不是merge

引用this link,通过this SO question发现:

拉与底垫,而不是合并

$ git pull --rebase 

# e.g. if on branch "master": performs a `git fetch origin`, 
# then `git rebase origin/master` 

由于分支合并在git的记录与合并提交,他们应该是有意义的,例如,以指示何时功能已合并到发布分支。然而,在常规的日常工作流程中,几个团队成员经常同步一个分支,时间轴会受到常规git pull的不必要的微合并污染。重新激活确保提交总是重新应用,以便历史保持线性。

您可以配置一定分行始终做到这一点,而不--rebase标志:

# make `git pull` on master always use rebase 
$ git config branch.master.rebase true 

您还可以设置一个全局选项来设置最后一个属性为每一个新的被跟踪的分支:

# setup rebase for every tracking branch 
$ git config --global branch.autosetuprebase always 
+0

现在有道理。我认为这是SHA1中的一个椭圆,而不是那里有2个哈希。 – taylonr

0

A fetch只检索“远程”参考(即来自不同存储库的参考)。

A pull实际上是一个fetch后跟一个merge

如果你想从origin/1.4这个命令你已经取出后的变化,问题: git merge origin/1.4

+0

我得到的抓取只检索它们,但不应该rebase然后将这些更改应用到我的本地分支?我正在尝试基于SHA1哈希重新绑定。我应该指定名称origin/1.4吗? – taylonr

相关问题