2012-10-12 10 views
14

私はここでうんざりしていると思う。前のコミットにロールバックする - MACのGithub(復帰はすでに進行中)

新しい機能を追加する最後のコミットから私のコードにいくつかの変更を加え、他のコードが今や不思議な動作をしていることに気付きました。私はその機能がそれまでに動作していたかどうかをテストするために、古いコミット(リモートにプッシュされたもの)にロールバックすることを決めました。

ロールバックを押す前に、私が失っていないので、現在行った変更をコミットしました。コミット後(リモートにプッシュしない)、私はその古いコミットにロールバックを行いました。 (私がロールバックしたコミットとちょうど今コミットしたコミットの間にかなりのコミットがあったことに注意してください)。

すべて正常に動作し、コードがそのコミットに戻りました。機能はコミットにも間違っていたので、私は最近のコミットに戻ることにしました。

しかし、私は最新のコミットにロールバックする以外の方法を知りませんでした。しかし、それは私にエラーを与えた。

error: a cherry-pick or revert is already in progress 
hint: try "git cherry-pick (--continue | --quit | --abort)" 
fatal: revert failed 
(32768) 

現在、ほとんどのものが戻ってきたようですが、現在のバージョンのコードは私の最後のコミットと同じではありません。間のどこかにあります。 =(

私が間違ってやったのか?[私は無実の外に求めていないよ、私はそれが間違っていた知っている;)]

それを行うための正しい方法は何でしたか?に -

git cherry-pick --abort:私はありませんマックのロールバックのための何githubのか分からないが、あなたが手で問題を解決するために、コマンドラインを使用したほうが良いだろうと思わ

答えて

17

を[私が第1枝しているべきだと思います]進捗

git branch -vaのいずれかのチェリーピッキングを停止 - どこポインタが

作業ディレクトリがクリーンであることを確認して、今あるあなたが表示されます: git status - 任意の変更または段階的なファイルを表示してはならない

git stash - 何がまだ存在変更した場合

git reset --hard your_local_branch github/remote_branch - それは、リモート側にあるようローカルブランチは、状態を反映します。明らかに、現在のブランチがリモートと同じコミットを指している場合は、リセットを行う必要はありません。分離したHEAD状態になっている場合(git statusはそれについて教えてくれます)、通常の状態に戻ってローカルブランチをチェックアウトします。

I.コミットの不良を取り除く:

今あなたが実際に達成したいかを決めますか?

使用インタラクティブリベースして、githubの上のリモートリポジトリにプッシュを強制、コミット障害のある行を削除

git rebase -i HEAD~11

II(障害のある10回のコミット前に起こったコミットと言います)。失敗したコミットを元に戻す? - 次のコミットが同じコードに触れていないことが絶対に確かでない限り、他のコミット後にこれを行うことはお勧めしません。(ラインが故障することにより追加された場合、それを元に戻すとその逆によって除去されるコミット)これは、効果的に逆コミット

git revert {commit-sha1}

IIIを作成します。間違ったコミットを修正する?インタラクティブ・リベースを使用しますが、修正のために間違ったコミットで停止するよう指示します。

何かが隠されてしまったら、git stash popを使って変更を元に戻してください。

希望に応えたい!

関連する問題