1.将 'dev' 变基到 'origin/master
git rebase
是一个本地操作,它只会修改你当前所在分支的提交历史,而不会直接影响远程仓库或任何其他分支。
保持提交历史的线性和整洁: 这是
git rebase
最主要的目的。 想象一下dev
分支是从master
分支分叉出来的,并且在dev
分支上进行了一些开发。 在此期间,master
分支可能也在不断更新。 如果你使用git merge
将master
分支合并到dev
分支,那么dev
分支的提交历史会包含一个合并提交,这会使提交历史看起来像一个分支树。 使用git rebase
可以避免这种情况,它会将dev
分支的提交“移动”到master
分支的顶端,使dev
分支的提交历史看起来像是直接在master
分支上进行开发一样,从而保持提交历史的线性。简化
dev
分支的提交历史: 通过将dev
分支变基到origin/master
,你可以将dev
分支上的所有提交都放在origin/master
分支的最新提交之后。 这可以使dev
分支的提交历史更加清晰,更容易理解。示例:
假设
origin/master
分支的提交历史如下:A -> B -> C
dev
分支的提交历史如下:A -> D -> E
如果你执行
git rebase origin/master
命令,那么dev
分支的提交历史会变成:A -> B -> C -> D' -> E'
其中
D'
和E'
是D
和E
的副本,但它们的提交 ID 已经发生了改变。
2. 使 master
分支包含 dev
分支的更改
确保你在
dev
分支上,并且已经成功地将dev
分支变基到origin/master
:git checkout dev git rebase origin/master
如果在变基过程中出现冲突,请解决冲突并使用
git rebase --continue
命令继续变基。切换到
master
分支:git checkout master
将
dev
分支合并到master
分支:git merge dev
这会将
dev
分支上的所有更改合并到master
分支。 如果出现冲突,请解决冲突。将本地
master
分支推送到远程origin/master
分支:git push origin master
这将把你的本地
master
分支的更改推送到远程仓库,使远程master
分支也包含dev
分支的更改。
- 变基 (rebase):
git rebase origin/master
只是将dev
分支的起点“移动”到origin/master
的最新提交之后,使得dev
分支的提交历史看起来像是直接在origin/master
分支上进行开发一样。 它并没有修改master
分支本身。 - 合并 (merge):
git merge dev
才是将dev
分支的更改合并到master
分支的步骤。 它会在master
分支上创建一个新的合并提交,将dev
分支的更改包含进来。 - 推送 (push):
git push origin master
是将你的本地master
分支的更改推送到远程仓库的步骤。 只有执行了这个步骤,远程master
分支才会发生变化。