1. ホーム
  2. git

[解決済み] マージの競合を引き起こす git stash pop の取り消し

2022-02-15 16:53:18

質問

私は自分のコードベースに変更を加え始めたのですが、古いトピックブランチにいることに気づきませんでした。それらを転送するために、それらを隠しておいて、masterから新しいブランチに適用したいと思いました。私は git stash pop を使用して、進行中の変更をこの新しいブランチに移しました。新しいブランチを作成する前に、新しい変更を master に取り込んでいないことを忘れていました。その結果、多くのマージコンフリクトが発生し、(pop を使っていたので) 自分の変更をきれいに保存しておくことができなくなりました。

新しいブランチを正しく作り直した後、隠した変更を正しく適用するにはどうすればいいのでしょうか?

解決方法は?

結論から言うと、Gitは賢いので、きれいに適用されないと隠し場所を落とさないのです。私は以下の手順で目的の状態にすることができました。

  1. マージのコンフリクトを解除すること。 git reset HEAD . (末尾のドットに注意)
  2. コンフリクトしたマージを保存するため(念のため)。 git stash
  3. マスターに戻るため。 git checkout master
  4. 最新の変更点をプルする。 git fetch upstream; git merge upstream/master
  5. 私の新しいブランチを修正するには git checkout new-branch; git rebase master
  6. 隠した変更を正しく適用するため(現在スタック上で2番目)。 git stash apply stash@{1}