Git 更改源提交
我的结构如下:Git 更改源提交,git,Git,我的结构如下: A-B-C-D (branch-C) \ \ \ H (branch-A) \ \-E-F-G (branch-B) 我想这样: A-B-C-D (branch-A and branch-C) \ \ \ \-E-F-G-H (branch-B) 我该怎么做 git checkout branch-B git cherry-pick branch-A # you could also
A-B-C-D (branch-C)
\ \
\ H (branch-A)
\
\-E-F-G (branch-B)
我想这样:
A-B-C-D (branch-A and branch-C)
\
\
\
\-E-F-G-H (branch-B)
我该怎么做
git checkout branch-B
git cherry-pick branch-A # you could also specify H directly
现在你有了H和G
git checkout branch-A
git reset --hard HEAD^ # you could also specify D directly
# HEAD is the current commit; HEAD^ is the previous one
现在您已经从包含A-B-C-D的分支中删除了H
注意,这只有在开始时有一些指向H和G的分支引用时才有意义,因为git中的提交对象合并了它;“移动”提交并不意味着什么,因为它改变了您的分支
现在你有了H和G
git checkout branch-A
git reset --hard HEAD^ # you could also specify D directly
# HEAD is the current commit; HEAD^ is the previous one
现在您已经从包含A-B-C-D的分支中删除了H
注意,这只有在开始时有一些指向H和G的分支引用时才有意义,因为git中的提交对象合并了它;“移动”提交并不意味着什么,因为它会更改您的分支。假设您已签出分支-B:
git cherry-pick branch-A
git push . branch-C:branch-A -f
您现在可以选择删除分支-A或分支-C-或同时保留两者。假设您已签出分支-B:
git cherry-pick branch-A
git push . branch-C:branch-A -f
现在,您可以选择删除分支A或分支C,或者保留两者。到OP:用在这些提交时开始的分支替换G和H。(这就是Borealid在最后一段中的意思,但我认为这样更清楚一些。)到OP:用从这些提交开始的分支替换G和H。(这就是Borealid在最后一段中的意思,但我认为这样更清楚一些。)如果没有分支名称,这不是很有用——OP很有可能最终会移动一个他不想移动的分支。也许给从G和H开始的分支命名?这将移动分支A,并且您将“丢失”B-C-D。它们仍然在那里,但不会有分支指向它们。没有分支名称,这不是很有用-OP很有可能最终移动他不想移动的分支。也许给从G和H开始的分支命名?这将移动分支A,您将“丢失”B-C-D。它们仍然在那里,但不会有分支指向它们。我已经冒昧地为您标记了几个分支;这将有助于更好地回答问题。添加分支C使其变得更好:)我冒昧地为您标记了几个分支;这将有助于更好地回答问题。添加了分支C以使其更好:)