仅将一个提交从分支A移动到分支B

时间:2017-02-17 18:13:52

标签: git

我确信这个问题是重复的,但由于回复的答案太多而且每个答案都不适合我,我无法找到正确的答案。

我有分支A,提交1 - > 2 - > 3 - > 4 - > 5 - > 6(提交6是最新的)。

我有分支B,提交1 - > 2(2是最近的)

我只想将提交6从分支A移动到分支B.所以3,4,5应该保留在分支A中....我只需要提交6并将其移动到分支B。

我想要的最终结果是

A = 1 - > 2 - > 3 - > 4 - > 5 - > 6 B = 1 - > 2 - > 6

这可能吗?如果这是FAQ,重复或只是不合逻辑,我很抱歉。

我用谷歌搜索了但是我发现的所有答案都指出我的结论是每次提交之前的所有提交也会移动......所以我没有办法在没有服用3,4,5的情况下服用6

我谷歌搜索我找到了这个教程

https://ariejan.net/2010/06/10/cherry-picking-specific-commits-from-another-branch/

但是在这里,一旦樱桃选择完成,提交76cada - 62ecb3都转移到主人。我只想62ecb3

1 个答案:

答案 0 :(得分:3)

$ git checkout branch-B
$ git cherry-pick commit-6
$ git checkout branch-A
$ git reset --hard HEAD^

看起来像git checkout branch-B

A--B            (branch-B) (HEAD)
    \
     C--D--E--F (branch-A)

git cherry-pick F

A--B--F'         (branch-B) (HEAD)
    \
     C--D--E--F  (branch-A)

git checkout branch-A

A--B--F'         (branch-B)
    \
     C--D--E--F  (branch-A) (HEAD)

git reset --hard HEAD^

A--B--F'         (branch-B)
    \
     C--D--E     (branch-A) (HEAD)
            \
             F   (detached and will be garbage collected)