2

git merge -s recursive -X oursを使用する代わりに、を使用したため、マージを元に戻したいgit merge -s ours

マージを元に戻すことについてのこのブログ投稿を読みましたが、私の場合はうまくいかないようです。

だから、私はmasterブランチを持っていて、それからブランチを持っていtopicます。ある時点で、にマージmasterしてtopicから、にマージtopicしましmasterた。にマージmasterしたときbranch、ファイルで競合が発生しましたが、重要なことは何も起こらないと思ったので、gitと言ってスキップし、自分のバージョンを使用すると思いました。そのとき、のgit merge -s ours代わりにを使用しました。これはgit merge -s recursive -X ours、今日、チームメイトの1人が行ったすべてのことを無視していることがわかりました。

今、私はこのマージを元に戻そうとしています:

git checkout master
git revert -m 2 c475f0ac

これは確かに、私のマージで無視された変更(私のチームメイトの変更)をツリーにもたらしています。問題は、私の変更がツリーに存在しなくなったことです。元に戻すことを試みましたが、成功しませんでした。

そのようなマージを元に戻す方法について何か提案はありますか?

4

1 に答える 1

1

revert サブコマンドは、指定されたコミットを元に戻すために新しいコミットを作成します。これは通常、revert マージ コミットでは複雑です。

ツリーを特定のコミットの状態に設定し、マージ コミットを検索して (c475f0ac ですか?)、ツリーをそのコミットの状態の親に設定できます (コマンドの最後のドットに注意してください。重要です)。

git checkout c475f0ac^ .

状態をコミットの別の親に設定する場合は、使用する必要があります

git checkout c475f0ac^2 .

等々。続行する前にコミットを分析するには、gitk コマンドが便利です (必要なコミットを選択するため)。

gitk c475f0ac

状態を前のコミットに設定した後、コミットできます

git commit --message 'restored tree to state previous to merge commit c475f0ac'

そしてプッシュ

git push
于 2011-04-11T18:15:00.080 に答える