1

少し背景:

コードベースの master ブランチ

コードベースの開発ブランチ

両方に取り組んでいます (知っていますが、このプロジェクトを始めたばかりなので、責任はありません)。

ある時点で、dev が誤って master にマージされ、その後、いくつかのコミットの後、これらの変更はすべて元に戻されました (手動で、次のように見えます)。

ここで、実際に dev を master にマージする必要がありますが、誤ってマージされてから元に戻されたすべての変更は、もちろん失われています。

マージ後に手動で変更を加える以外に、ここで何をすべきかよくわかりません。

何かご意見は?

4

2 に答える 2

1

インタラクティブなリベースをお勧めします。変更を元に戻したコミットを削除し、マージの競合を修正します。

于 2012-06-01T16:15:01.473 に答える
1

git のすばらしいところは、その柔軟性と実際に何かを削除するのがいかに難しいかです。

これにアプローチする1つの方法を次に示します。

git checkout master
git log (make note of all commits on master that you want which were done after the incorrect merge)
git reset --hard <commit before dev was merged in in error>
git cherry-pick <id's of commits previously identified>
git merge develop (to do the desired merge)

他の回答で述べたように、インタラクティブなリベースもオプションです。これを使用して、悪いマージを導入したコミットとそれを元に戻したコミットを削除できます。

履歴を書き換えるので、 --force を使用して共有リポジトリにプッシュし、他の開発者に知らせて、再クローンしたり、変更を新しいブランチにプルしたりできるようにする必要があることに注意してください。これらの変更を進める前に、チームと調整することが重要です。

于 2012-06-01T17:18:27.373 に答える