2013-05-07 8 views
6

この質問は、いくつかのコミットを元に戻しながらいくつかのコミットを保持したいという点で、他の質問とは異なります。git fetch upstreamを元に戻すにはどうすればいいですか? git merge upstream/master`?

これは私の設定です。

Upstream repo on github (public repo which I don't own) 
Personal repo on my server(git clone --bare $upstream) 

私のワークフローは、このようなものだった:私は/上流合併フェッチする前にどのように私は戻っ状態に行くのです

Need to customize my personal branch 
    1. check out origin/master(Personal) 
    2. make changes 
    3. push to origin/master 

Need to get new feature or bug fix from the original author(github) 
    1. git fetch upstream 
    2. git merge upstream/master 

今、私は上流/マスタがバグを持って見つけて、元に戻したい、
最後に?

編集。

と仮定

  1. 私は

私はチームメンバーが原点/マスター(個人)にプッシュ何合併上流

  • を合併今私は、ステップ1を元に戻します。

    git reset --hard co mmit_sha_of_one_prior_the_merge_1

    (ただし、シャーを見つけるのは簡単ではありませんが、それはupstreamではなく origin/masterではない コミット-SHA-of_one_prior_the_merge_1を見つけることは容易ではありませんので、gitのログは、私はステップ2マージをどのようにしておくん

    )、上流のコミット 舎のの多くを示して?

    私は他のチームメンバーは、私も個人

  • に私の仕事を押した個人
  • にプッシュ何マージ私は
  • 上流合併

    1. もう少し複雑なシナリオを想定

      今すぐ上流のマージを元に戻したいと思います。 どうすればいいですか?

  • +0

    http://stackoverflow.com/questions/2389361/undo-a-git-merge – 1615903

    答えて

    -1

    (あなたがorigin/masterにあなたのマージをプッシュしていない場合)あなたがしてorigin/master状態に最寄りのmasterブランチをリセットすることができます。

    git reflog 
    
    :それはあなたがREFLOGを使用することができますことはできません場合は

    git reset --hard origin/master 
    

    詳しくはundoing a git rebaseをご覧ください。

    +0

    これはOPが望んでいたものの逆です。 –

    2

    あなたは実際にマージコミットをしているのであなた自身の変更を行います。

    git reset --hard HEAD~1 
    

    あなたの最後のコミットが問題のマージコミットであったとします。

    +0

    私は自分のプライベートレポに他のコミットを持っています、マージコミット以外 – eugene

    関連する問題