gpt4 book ai didi

git rebase 分支与祖 parent

转载 作者:太空狗 更新时间:2023-10-29 14:06:39 25 4
gpt4 key购买 nike

我正在阅读有关 git rebase 的内容,并且正在通读 - git-scm的文档。

我对使用 git rebase 的 onto 功能将分支 rebase 到它的祖 parent 有一个特别的疑问(就像上面链接中的情况一样)。
让我们假设我们有一个如下所示的分支/提交结构:

C1 <- C2 <- C5 <- C6 [master]
<- C3 <- C4 <- C10 [server]
<- C8 <- C9 [client]

现在,我想将 client 分支 rebase 到 master 上。我检查了 client 分支并运行了 git rebase --onto master server client 命令。我从这个命令得到的结果结构(在 merge 和快速转发 master 到客户端之后)是:

C1 <- C2 <- C5 <- C6 <- C8' <- C9' [master, client]
<- C3 <- C4 <- C10 [server]

我的疑问是,如果我在 client 分支中的更改取决于 server 分支中的 C3 提交怎么办。 master 分支中的结果代码在 rebase 这样的场景中肯定会失败。据我所知,实际结果(在 merge 和快速转发 master 到客户端之后)不应该是这样的:

 C1 <- C2 <- C5 <- C6 <- C3' <- C8' <- C9' [master, client]
<- C4 <- C10 [server]

谁能告诉我我的理解/担忧是否有误?

最佳答案

如果你从

开始
C1---C2---C5---C6  master
\
C3---C4---C10 server
\
C8---C9 client

你期望的结果是

C1---C2---C5---C6---C3'---C8'---C9' master, client
\
C4---C10 server

那么误解就是:C3'不可能是C4的祖先。这不可能发生在这里。

当你做的时候

git rebase --onto master server client

而且,正如您所说,客户端 中的更改“取决于”C3 中的更改,您可以解决 merge ,您将获得

C1---C2---C5---C6  master
\ \
\ C8'---C9' client
\
C3---C4---C10 server

现在,在 merge masterclient 之后,您准备好 rebase server,可能会发生两种情况:

1。如果您保留了 C8 的更改,这些更改在之前的冲突中“依赖于”C3,那么在您解决当前冲突后,git 会说

No changes - did you forget to use 'git add'? If there is nothing left to stage, chances are that something else already introduced the same changes; you might want to skip this patch.

When you have resolved this problem, run "git rebase --continue". If you prefer to skip this patch, run "git rebase --skip" instead. To check out the original branch and stop rebasing, run "git rebase --abort".

然后你可以做

git rebase --skip

你会得到

C1---C2---C5---C6---C8'---C9'  master, client  
\
C4'---C10' server

请注意,没有 C3',因为这些更改是通过 C8' 应用的。

2。如果您没有保留 C8 中“依赖于”上一次冲突中的 C3 的更改,则在您解决当前冲突并执行

git rebase --continue

你会得到

C1---C2---C5---C6---C8'---C9'  master, client
\
C3'---C4'---C10' server

这意味着当 <branch> 发生变化时“取决于”<upstream><newbase> 冲突 rebase 时,git 为您提供 merge 解决机制,作为一种选择是现在还是以后需要这些更改的方式。

关于git rebase 分支与祖 parent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26578405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com