1

我从这个问题中描述的类似问题开始,做了一些变基和合并操作,在一种情况下最终得到以下结果。

---a---b---c---d---   master
    \         /
     x---y---z        thebranch

合并时我一定做错了什么(给定错误的 SHA?),因为我需要的是以下内容

---a---b---c---d---   master
    \     /    
     x---y---z        thebranch

我现在的问题是,我怎样才能做到这一点?移植是要走的路还是更直接?

4

3 回答 3

0
$> git checkout master           # go to master
$> git reset --hard c            # roll back to c, discarding the merge-commit d
$> git merge y                   # merge y into c, creating a new merge-commit d'

by doign that

---a---b---c---d---   master
    \         /
     x---y---z        thebranch

effectively becomes

---a---b---c---d'---      master
    \         /    
     x-------y---z        thebranch
于 2012-12-20T11:07:08.707 回答
0
git checkout -b by b
git merge y

This should get you

---a---b---by---    by
    \     /
     x---y---z      thebranch

git checkout master
git reset --hard c

This should get you

         c -- master
        /
---a---b---by---    by
    \     /
     x---y---z      thebranch

git rebase --onto by HEAD^
git branch -d by

This should get you:

---a---b---by---c'    master
    \     /
     x---y---z      thebranch

...i think :-)

于 2012-12-20T11:07:30.363 回答
0
  1. 转到主分支。

    git checkout master

  2. 我认为d是合并提交。所以,我们可以丢弃它。

    git reset --soft c//它将您的主分支带回c.

  3. 现在合并y

    git merge y

于 2012-12-20T11:03:28.957 回答