2011-07-11 12 views
1

私はGitにあまり慣れていません。私は基本を持っていますが、それについてはそれがあります。Gitは3つのブランチをマージして元に戻す

とにかく、私の友人は、これらの3つのブランチをマージすることで私を歩いてきました。彼は自分自身でmergetoolsの部分を実行するために私を残しました。私は正しくマージしませんでしたが、すでに変更をプッシュしていました。変更を取り消して3つの異なるブランチに戻ってから再びマージする方法はありますか?

編集*それが重要な場合

100%わからないが、枝の2は、上流からです。

答えて

1

git logなどの最後のクリーンステート(つまり、マージ前のコミット)のコミットIDを見つけ出し、それにリセットします。

git reset --hard abcdef01 

その後、強制的に古い状態にします。

git push -f origin 

注意してください:reset --hardはunstaged変更を破棄し、とてもきれい作業ディレクトリを持つようにしてくださいます。不明な場合はgit stashを実行してください。 さらに、これは、結合された状態でそれ以上の作業をしなかった場合、つまりそれ以来何もコミットしていない場合にのみ問題なく動作します。

マンページ:

+0

私はあなたがリセットできないことを読んで覚えていたと思った。たぶん私はあなたが読んでいない、私はできないことを読んでいないのですか?いずれにしても、これを再度押す前にテストする方法はありますか? – John

+0

重要であれば100%ではありませんが、ブランチの2つは上流からのものです。 – John

+0

ローカルリポジトリでいつでも何でもできます。すでにプッシュされた(公開された)履歴を変更するので、これはお勧めできません。 – Koraktor

-1

あなたはgit revert <>を使用することができますが、最後のクリーン間の非常に多くのコミットコミットし、現在のheadがあるでしょう。私はgitコマンドの多くを知らないが、間にすべてのコミットを印刷する方法がなければならない。 SHAだけを抽出してそれらをすべて元に戻すスクリプトを書くことができます。

私はこれについて100%確信していません。 :)

関連する問題