Git rebase local vs git pull --rebase origin
Git rebase local vs git pull --rebase origin
我有一个本地(从未推送到远程)功能分支 F1 来自 master 进行了几次提交。我似乎不明白这两个动作之间的区别(F1是当前分支):
git fetch origin
git rebase master
和
git pull --rebase origin master
我的期望是它们应该是等价的,但它们不是 - 产生了不同的结果。
我的想法有什么问题吗?
1. git fetch origin
和 git rebase master
将应用从 F1
到本地 master
分支的更改。假设您的提交历史最初如下所示(远程 master
分支在远程有提交 J
):
A---B---C---D---E master
\
F---G---H F1
当你执行 git fetch origin
和 git rebase master
时,即使 origin/master
指向 J
,它只会 rebase F1
本地顶部的分支master
分支(如图所示提交 E
):
A---B---C---D---E(master)---J origin/master
\
F---G---H F1
2. 命令 git pull --rebase origin master
将首先从远程 master
分支拉取更改,然后将当前分支 F1
变基到顶部其中:
A---B---C---D---E---J master,origin/master
\
F---G---H F1
总之,如果本地master
分支与远程master
分支同步,这两种方式的结果是一样的(rebase F1
分支在master分支之上) .如果远程 master
分支有新的提交,而本地 master
分支上不存在,结果是不同的(一个在本地 master
分支上变基,另一个在本地 master
分支上变基origin/master
分支)。
git fetch origin
仅将远程文件从远程存储库下载到本地分支。
git rebase master
获取整个分支(您分支中的提交),并将其放在本地存储库的顶部。它改变了您项目的历史。
git pull --rebase origin master
git 默认拉取,执行合并,但您可以使用变基选项强制执行。
检查这个 link
我有一个本地(从未推送到远程)功能分支 F1 来自 master 进行了几次提交。我似乎不明白这两个动作之间的区别(F1是当前分支):
git fetch origin
git rebase master
和
git pull --rebase origin master
我的期望是它们应该是等价的,但它们不是 - 产生了不同的结果。
我的想法有什么问题吗?
1. git fetch origin
和 git rebase master
将应用从 F1
到本地 master
分支的更改。假设您的提交历史最初如下所示(远程 master
分支在远程有提交 J
):
A---B---C---D---E master
\
F---G---H F1
当你执行 git fetch origin
和 git rebase master
时,即使 origin/master
指向 J
,它只会 rebase F1
本地顶部的分支master
分支(如图所示提交 E
):
A---B---C---D---E(master)---J origin/master
\
F---G---H F1
2. 命令 git pull --rebase origin master
将首先从远程 master
分支拉取更改,然后将当前分支 F1
变基到顶部其中:
A---B---C---D---E---J master,origin/master
\
F---G---H F1
总之,如果本地master
分支与远程master
分支同步,这两种方式的结果是一样的(rebase F1
分支在master分支之上) .如果远程 master
分支有新的提交,而本地 master
分支上不存在,结果是不同的(一个在本地 master
分支上变基,另一个在本地 master
分支上变基origin/master
分支)。
git fetch origin
仅将远程文件从远程存储库下载到本地分支。
git rebase master
获取整个分支(您分支中的提交),并将其放在本地存储库的顶部。它改变了您项目的历史。
git pull --rebase origin master
git 默认拉取,执行合并,但您可以使用变基选项强制执行。
检查这个 link