0

そうですね、ちょっと変な質問に聞こえるかもしれませんが、私はばかげたことをしたと思います。

私は 2 つの異なるブランチ (変更の数は非常に少ない) を持っていて、いくつかの変更を一方から他方にマージしたいと考えていました。そこで、Git 拡張機能で、[コマンド] > [ブランチのマージ] に移動しました。

残念ながら、マージの競合を管理するオプションを提供するのではなく、[OK] をクリックすると自動的に処理されました。これは私が望んでいたものではなかったので、元に戻す方法を見つけようとしました。

私が最終的にやったのは、ブランチの1つに対して最後のコミットを選択し(マージ前ですが、いずれかのブランチからの最新のコミット)、それにハードリセットすることでした。

物事を以前の状態に復元するのではなく (つまり、マージが行われていない)、代わりに、両方のブランチの git 拡張機能に単一の赤い線のように見えるものが残り、それぞれが同じであり、最新バージョン (つまり、post-マージ)。2 つのブランチを切り替えることはできますが、両者の間に明らかな違いはありません。

つまり、これは基本的に私がやりたかったことです (この図が粗雑で申し訳ありません。どのように表示すればよいかわかりません)。

Branch 1
   x---------------y
          \
           \ 
   x--------x------y
Branch 2

ブランチ 1 からブランチ 2 にマージしたい変更がありますが、両方を別々に保持したかったのですが、すべての変更をマージしたくありませんでした。

上記の過ちを元に戻すことはできますか? そして、これを行う正しい方法は何でしたか?

4

1 に答える 1

1

両方のブランチを同じコミットにリセットしたようです。そのブランチでマージする前に、各ブランチをコミットにリセットする必要があります。

ですから、この図では

Branch1
   A------
          \
           \ 
   B--------C------D
Branch2

行う

git checkout Branch1
git reset --hard A
git checkout Branch2
git reset --hard B

その後、git cherry-pickあるブランチから特定のコミットを選択して、別のブランチにコピーするために使用できます。

というわけで、この図を作成するには

Branch1
   E-----G---------I
          \
           \ 
   F--------H
Branch2

行う

git checkout Branch2
git cherry-pick G
于 2013-05-20T20:30:16.017 に答える