2017-10-05 14 views
0

これは混乱してしまい、何をすべきかわかりません。ここに私のリモートブランチの現在の状態復帰したローカルコミットを元に戻してメインにリセットします

commit_1 
commit_2 
commit_3 
... 
commit_9 
commit_prod_code 

1-9からのすべてのコミットは別のブランチに移動する必要があると私の主人が戻っcommit_prod_codeに戻すべきです。そうするために、私は実現しなかった

git revert HEAD~9..HEAD 

ことの一つは、私はno-editフラグを入れていなかったということです。このコマンドを実行しました。したがって、これらのコミットのすべての "コミットメッセージ"を誤って変更することになりました。私はしたくない。

私のローカルブランチは9つ後ろにコミットされ、コミットメッセージが混乱しています。ブランチをマスタにリセットして、「復帰」手順を再度実行したい。

どうすればよいですか?

UPDATE

は、ここに私の現在の状態

$ git log --oneline                              [2h43m] ✭ 
36557cb revert_commit 
7f2c406 revert_commit 
9db362e revert_commit 
202446d revert_commit 
7cb109d revert_commit 
ce3ebf7 revert_commit 
ad75615 revert_commit 
e234267 revert_commit 
9285d48 revert_commit 
753e421 revert_commit 
67aa988 revert_commit 
c5c7101 revert_commit 
6386a3b revert_commit 
28aee0d revert_commit 
69c74b6 revert_commit 
0e172ec revert_commit 
5e1b1cb revert_commit 
9b21c68 revert_commit 
commit_prod_code 

私は何をしたいことは、この復帰プロセス全体を破棄し、私のオリジナルのマスターの状態に戻ることです。この復帰コードはどこにもプッシュされていません

私はgit reset --hardgit reset --hard HEAD^を実行しようとしましたが、それでも私のブランチはそれよりも先にコミットされています。

私がやりたいすべては、すべてこのrever処理をキャンセルこれらはあなたが戻って特定のコミットを取得するためにハードリセットを行うことができますリモートヘッドに

+0

リモートブランチには現在どのようなコミットがありますか? –

答えて

1

を自分のブランチを上流とリセットするために変更を元に戻しプッシュしていないです。

git reset --hard commit_prod_code 

それとも、あなたはハードあなたの起源のブランチにリセットすることができます。あなたはあなたのコミットのすべてを「失う」でしょう

git reset --hard origin/master 

ますが、それはそのように聞こえるが、あなたがワものですしてください。

git revertを避けてください。これにより、以前のコミットを逆転させる新しいコミットが作成されます。これは、マスターブランチにマージするときに実際に混乱することがあります。コミットによって共有ブランチが作成された場合は、revertしか使用しないでください。私はrevertを一度しか使用していませんでした。他の人の変更を無効にする効果がありました。なぜなら、単に「追加しない」というのではなく、いくつかの行を削除したいからです。


アップデートに基づいて、基本的にブランチ履歴が書き換えられたようです。あなたがしなければならないことは、ブランチにもはや存在しないオリジナルのコミットに戻ることです。恐れていない...彼らは行っていない!

まず、git reflogを実行して、チェックアウトしたすべてのコミットの完全な履歴を確認します。履歴をスクロールして、最初からやり直したいコミットが見つかるまでget reset --hard <commit-hash>を実行します。

これで厄介な復帰コミットをロールバックしました。

次に、git checkout -b <new-branch-name>を実行します。これにより、現在のコミットを頭として新しいブランチが作成され、新しく回復したコミットを保存することができます。

最後に、masterブランチに戻り、git reset --hard origin/masterを実行して、マスターブランチをサーバーと完全に同期させます。

サーバーが台無しにされている場合は、あなたは(danger, danger, danger)git push --force(danger, danger, danger)続いgit reset --hard <commit-hash-you-want>を実行する必要があります。このリポジトリで作業している他の人がいる場合は、すべての人にマスタブランチの履歴を変更しようとしていることを警告する必要があります。これはおそらく、あなたがサーバーを台無しにした後に作成されたブランチに対していくつかのクリーンアップを必要とするでしょう。

+0

私はこれらの変更をすべて失いたくはありません。コードの**現在の**状態は、別のブランチに駐車されます。問題は、現在のブランチをマスターにリセットするにはどうすればいいのですか(私はしばらくこのリバーを取り除きたい)。私は 'git reset -hard'をやってみましたが、私のブランチはまだ** 9後ろにコミットしています** –

+0

復帰は単に新しいコミットを追加するので、復帰前にコミットにリセットできるはずです。 – JDB

+0

多分私の質問では明確ではない。コミットされていない現在の復帰プロセスを破棄するにはどうすればよいですか。私はマスターから再起動したいが、git reset - ヘルプが役に立たなかった –

0

第九から新しいブランチをコミット作成してみてください:今すぐ

git branch newBranch <SHA-1 of 9th commit> 

newBranchcommit_prod_codeコミットの上に座って9つのコミットをしていなければなりません。これらの9つのコミットを別のベースの上に置くつもりなら、チェリーピッキングやリベースを試すことができます。

コミット1から9を元に戻す元のブランチで既にマージコミットしているので、この時点で完了している可能性があります。

関連する問題