Git rebase local vs git pull --rebase origin

时间:2017-07-04 12:51:46

标签: git version-control git-rebase branching-and-merging

我有一个本地(从未推送到远程)功能分支 F1 master 制作很少提交。我似乎不明白这两个动作之间的区别( F1 是当前分支):

git fetch origin
git rebase master

git pull --rebase origin master

我的期望是它们应该是等价的,但它们不是 - 产生不同的结果。

我的想法有什么问题?

2 个答案:

答案 0 :(得分:3)

1。 git fetch origingit rebase master会将更改从F1应用到本地master分支机构。假设您的提交历史记录如下所示(远程master分支在远程中提交J):

A---B---C---D---E    master
         \
          F---G---H  F1

当您执行git fetch origingit rebase master时,即使origin/master指向J,它也只会在本地{{1}的顶部重新定位F1分支1}} branch(提交master作为图表):

E

2。命令A---B---C---D---E(master)---J origin/master \ F---G---H F1 首先会从远程git pull --rebase origin master分支中提取更改,然后在其顶部修改当前分支master

F1

总之,如果本地A---B---C---D---E---J master,origin/master  \ F---G---H F1 分支与远程master分支同步,则这两种方式具有相同的结果(主分支顶部的rebase master分支)。如果远程F1分支具有在本地master分支上不存在的新提交,则结果是不同的(本地master分支的一个rebase,另一个的rebase) master分支)。

答案 1 :(得分:-1)

git fetch origin

仅将远程文件夹中的远程文件下载到本地分支。

git rebase master

获取整个分支(分支中的提交),并将其放在本地存储库的顶部。它会更改项目的历史记录。

git pull --rebase origin master

默认情况下,git pull执行合并,但您可以使用rebase选项强制它。

检查此link