Use*_*rol 8 git version-control git-rebase branching-and-merging
我有一个本地(从不推送到远程)功能分支F1由master制作,并进行了几次提交。我似乎不明白这两个操作之间的区别(F1是当前分支):
git fetch origin
git rebase master
Run Code Online (Sandbox Code Playgroud)
和
git pull --rebase origin master
Run Code Online (Sandbox Code Playgroud)
我的期望是它们应该是等效的,但它们不是 - 产生了不同的结果。
我的想法有什么问题?
1. git fetch origin以及git rebase master将更改应用F1到当地的master分公司。假设您的提交历史最初如下所示(远程master分支已J在远程提交):
A---B---C---D---E master
\
F---G---H F1
Run Code Online (Sandbox Code Playgroud)
当您执行git fetch originand 时git rebase master,即使origin/master指向J,它也只会F1在本地master分支的顶部重新设置分支(E作为图表提交):
A---B---C---D---E(master)---J origin/master
\
F---G---H F1
Run Code Online (Sandbox Code Playgroud)
2.该命令git pull --rebase origin master将master首先从远程分支拉取更改,然后F1在其顶部重新设置当前分支:
A---B---C---D---E---J master,origin/master
\
F---G---H F1
Run Code Online (Sandbox Code Playgroud)
总之,如果本地master分支与远程master分支同步,这两种方式的结果是一样的(rebaseF1分支在 master 分支的顶部)。如果远程master分支有本地master分支上不存在的新提交,则结果是不同的(一个在本地master分支上变基,另一个在origin/master分支上变基)。
| 归档时间: |
|
| 查看次数: |
6845 次 |
| 最近记录: |