我是新手git
,我正在尝试了解变基。对我来说,合并过程更容易理解,因为我的经验是Clearcase
.
所以首先我不明白 rebase 是否与合并完全相同。如果是,为什么同一件事有两个程序?
我也在阅读这部分git-branching。
它在这里:
然后它说:
$ git rebase --onto master server client
这基本上是说,“检查客户端分支,找出
客户端和服务器分支的共同祖先的补丁,然后将它们重播到主服务器上。” 这有点复杂;但是结果,如图 3-32 所示,非常酷。
所以我假设这个命令意味着在服务器和客户端分支的共同祖先之后进行所有提交,不包括共同祖先。所以我们最终得到了下一张照片。
然后它说:
现在你可以快进你的 master 分支(见图 3-33):
$ git checkout master
$ git merge client
这个例子对我来说似乎是错误的。
在第二张图片中,我们“移动”C8
并且C9
作为rebase
. 然后我们合并。
但是C8
出来C3
并且C3
代码不存在于master
分支中。
之后,rebase
虽然新的C8
ieC8'
在前面master
并且实际上master
在链中具有之前的 ie。
但这怎么能行呢?IfC8
依赖于C3
失败rebase
,因为C3
它不是branch
.
例如,如果客户端使用了某些功能,则它在分支C3
中不存在。main
所以在 之后rebase
将C8'
在定义的函数中有依赖C3
中不存在的main
。所以代码不会编译。
任何人都可以帮助解释rebase
工作流程,如果我在本教程的这一部分中所说的git-scm
(它是错误的)是正确的?