コードベースに変更を加え始めましたが、古いトピック ブランチにいることに気付きませんでした。変更を転送するには、変更をスタッシュしてから、マスターから離れた新しいブランチに適用したいと考えました。git stash pop
新しいブランチを作成する前に、新しい変更をマスターにプルしていないことを忘れて、作業中の変更をこの新しいブランチに転送していました。その結果、マージの競合が多数発生し、変更のクリーンなスタッシュが失われました (pop を使用したため)。
新しいブランチを正しく再作成したら、保存した変更を復元して適切に適用するにはどうすればよいでしょうか?
ベストアンサー1
結局のところ、Git は、きれいに適用されない場合はスタッシュを削除しないほど賢いのです。次の手順で、目的の状態に到達できました。
- マージ競合をステージ解除するには:
git reset HEAD .
(末尾のドットに注意) - 競合したマージを保存するには(念のため):
git stash
- マスターに戻るには:
git checkout master
- 最新の変更を取得するには:
git fetch upstream; git merge upstream/master
- 新しいブランチを修正するには:
git checkout new-branch; git rebase master
- 正しいスタッシュされた変更を適用するには(現在スタックの 2 番目):
git stash apply stash@{1}