2017-06-22 7 views
-2

私たちは、マスターブランチ、マスターからのステージングブランチ、およびステージングからの私の機能ブランチを持っています。ここでは図です:特定のコミットを削除するには?

 my_feature: o--o--o---o--o <= after rebase, contains commits 
       /  /  from other_feature 
other_feature: o--o /
      / \ /
    staging: o--o---o--o 
      /   
    master: o--o--o--o-o--o--o--o--o <= master 

other_featurestagingにマージすることを意図してstagingと合併したが、その後my_featuremasterに直接マージする必要があることを実現した後、私はmy_featureブランチをリベース。

今のところ問題はother_featureから現時点ではmasterに取引がありません。

私はgit revert --no-commit 65b2e1bをしようとすると、それがマージされていないファイルやfatal: Your index file is unmergedのリストを返します。私はこれがどういう意味か分かりません。

git statusは、前述のマージされていないファイルを返します。そこでgit commit -am "revert"を実行して、You are currently reverting commit 5a53cd0. nothing to commit, working directory cleanというメッセージを返します。私はその後、git pushをしようとするとそれだけでeverything is up to date

任意の提案を言いますか?あなたが新しいリベースで、元のリベースを元に戻すことができ

+0

これらの「マージされていない」メッセージがマージの途中であることを意味しています。表示されているステータスは、既にこの復帰を開始したことを示唆しており、まだ復帰しています。コミットを元に戻したい場合は、手動でマージプロセスを終了し、復帰を 'git commit'する必要があります。 git pushは* commit *だけをプッシュし、進行中のrevert-the-a-merge-conflictはまだ新しいコミットではないので、 'git push'はあまり役に立ちません。あなたがすべてで元に戻すのではなく、完全に元のリベースを取り消して、所望の標的とリベースのプロセスを再起動してはならないよう – torek

+0

は、あなたの質問の更新に基づいて、それが聞こえます。それが正しい場合は、現在の復帰を終了する代わりに、 'git revert --abort'を実行して復帰状態に戻します。フィーチャーブランチのreflogを使用して、リベースを元に戻します。 – torek

+0

助けてくれてありがとう!数日前にリベースしてから、それ以来何週間もの作業がありましたか? 誰かが私がなぜこのような質問をdownvoteするのか理解するのを助けることができますか?それはとても不合理なのでしょうか? –

答えて

0

original_masterは最も左方向/下方向にあなたのASCIIの絵にコミットされ

git checkout my_feature 
git rebase --onto original_master staging 

...、すなわち、(あなたは、もともとのオフmy_feature分枝コミットあなたの写真は左のoさんの厳密な解釈で別のものを示していますが、それはあなたがしたことだと思います。

これはoriginal_masterから始め、その後、my_featureまでstagingからすべてのパッチを適用する、または、他の言葉で、それはmy_featureからoriginal_masterstagingの間に何かを「削除」しますします。そうでない場合は、にお気軽にお尋ね - 比喩当然といえば、私はあなたがgit rebase変更何でも、ちょうどそれが理にかなっている場合は...他の場所

を新しいコミットを追加し、素晴らしいがないことを認識しているかなり確信しています私は明確にすることができるコメント。

関連する問題