我是新手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虽然新的C8ieC8'在前面master并且实际上master在链中具有之前的 ie。
但这怎么能行呢?IfC8依赖于C3失败rebase,因为C3它不是branch.
例如,如果客户端使用了某些功能,则它在分支C3中不存在。main所以在 之后rebase将C8'在定义的函数中有依赖C3中不存在的main。所以代码不会编译。
任何人都可以帮助解释rebase工作流程,如果我在本教程的这一部分中所说的git-scm(它是错误的)是正确的?