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 -b by b
git merge y

これはあなたを得るはずです

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

git checkout master
git reset --hard c

これはあなたを得るはずです

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

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

これにより、次のことが得られます。

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

...おもう :-)

于 2012-12-20T11:07:30.363 に答える
0
  1. master ブランチに移動します。

    git checkout master

  2. dマージコミットだと思います。だから、私たちはそれを捨てることができます。

    git reset --soft c// master ブランチを に戻しますc

  3. 今すぐマージしyます。

    git merge y

于 2012-12-20T11:03:28.957 に答える
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'

そうすることによって

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

効果的になる

---a---b---c---d'---      master
    \         /    
     x-------y---z        thebranch
于 2012-12-20T11:07:08.707 に答える