3

私は自分のレポでこの問題に遭遇しました:

私のブランチツリーの構造は次のとおりです。

(branch)         a - b - c - d - e - f - g
               /           /
(master)  1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 ...

ここでは、ブランチを作成したときにコミット 1 でマスターから分岐し、コミット 5 でマスターをブランチにマージしました。

問題は、マージ中にいくつかの変更を破棄し、それらを元に戻したいということです。これにより、コミット 5 でのマージが発生しなかったかのように master をブランチに再度マージできるようになります。

つまり、コミット 5 (またはコミット d) でのマージの影響を、後続のコミットで変更を失うことなく元に戻すにはどうすればよいでしょうか? (つまり、e - f - g)

私の目標は、マスターをブランチにマージできるようにすることですが、今はマージにもっと注意を払う必要があります。

ありがとう。

4

1 に答える 1

3
(branch)         a - b - c - d - e - f - g
               /           /
(master)  1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 ...

git rebase --onto c d g
git checkout -b newbranch

(newbranch)                e' - f' - g'
                          /
(branch)         a - b - c - d - e - f - g
               /           /
(master)  1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 ...

結果に満足したら、古いブランチを捨てて、新しいブランチの名前を変更します。

git branch -D branch
git branch -m newbranch branch

最後に、新しいブランチをプッシュします。

git push -n origin branch # check what you're about to push
git push -f origin branch # -f is required to rewrite history; be careful
于 2013-06-14T04:07:41.377 に答える