2012-04-03 17 views

答えて

2

あなたはすでにあなたが使用することができ、リモートへの変更をプッシュした場合:

$ git revert <hash of commit b> 

のgitのヘルプを約会談をリベースコミットb

+0

クール!それはコミット 'c'を保持していますか? –

+0

はい、それはあります:) – stewe

+0

文字通り、それは何をしているのは、bの*逆*である新しいコミットを作成し、それをcの上にコミットすることです。それは、コミットBに入ったものを公開し、歴史上の間違いやクリーンアップのトレイルを残すべきです。これは、好きではない人もいますが、本当にあります。 –

0

すでにリモートリポジトリにプッシュしていないと仮定すると、あなたはインタラクティブなリベースを行うことができます。ここを参照してください:あなたは一つだけのHEADからコミットが必要な場合は、あなただけ持って別のブランチにチェリーピックを使用することができます

http://book.git-scm.com/4_interactive_rebasing.html

0

そのオーバーコミット:

$ git checkout -b working 
$ git reset --hard <hash of the commit `a`> 
$ git cherry-pick <hash of the commit `c`> 

ハードリセットを作業コピーをそのコミット時点の状態に戻し、チェリー・ピックはコミットcに導入された変更を作業コピーの上に直接適用します。

0

の変更を削除し、新たなコミットdを作成し、この正確なケース!それをチェックしてください:

A range of commits could also be removed with rebase. If we have the 
    following situation: 

      E---F---G---H---I---J topicA 

    then the command 

     git rebase --onto topicA~5 topicA~3 topicA 

    would result in the removal of commits F and G: 

      E---H'---I'---J' topicA 

    This is useful if F and G were flawed in some way, or should not be 
    part of topicA. Note that the argument to --onto and the <upstream> 
    parameter can be any valid commit-ish. 
+0

'topicA'はブランチ名ですか? –

+0

はい。この例では、topicA〜5は任意のコミットである可能性があります。それはあなたの質問で 'c'になります。トピックA〜3は 'a' – GoZoner

関連する問題