2017-06-01 19 views
0

私は自分のプロジェクトをコミットしました。 しかし、コミットを削除したいが、そのコードを次のコミットに保つ。リストアコミットは強制的に削除Github

// now commit is A 

git reset --soft 9c74193 
// 9c74193 is old commit 

git commit -m "My commit" ` 

git push -f origin master 

私はそれを行うことができますA. をコミットし、復元したい: 私はこのコードを使用しましたか?そしてどうやって ?

ありがとうございました。

+0

「**コミットAを復元する」とは、どういう意味ですか?あなたが達成したいことについてもっと説明してください。 –

+0

コミットを元に戻すことを意味しますか? – LethalProgrammer

答えて

0

これが最近実行されていて、上記のコマンドを実行したローカルリポジトリがまだ残っている場合、reflogにはまだAというコミットの参照が残っている可能性があります。

$ git reflog 
dd3f691 [email protected]{0}: commit: My Commit 
9c74193 [email protected]{1}: reset: moving to 9c74193 
aaaaaaa [email protected]{2}: commit: A 

$ git checkout [email protected]{2} 

あなたはたくさんの周りHEADポインタを移動してきた場合、あなたはデタッチヘッド状態になりますAをチェックアウトしたら、あなたはまた、

$ git reflog master 
dd3f691 [email protected]{0}: commit: My Commit 
9c74193 [email protected]{1}: reset: moving to 9c74193 
aaaaaaa [email protected]{2}: commit: A 

$ git checkout [email protected]{2} 

をブランチ固有のREFLOGをチェックすることができます。既存のブランチをあなたが望んでいると確信しているなら、ここに強制的に移動させることができます。 (例えば、以前のforce-pushが他の開発者にとって問題を作り出し、以前と同じように修正しようとしている場合は、git branch -f master)。あるいは、ここで新しいブランチやタグを作成することもできます。

もちろん、これは別の強制プッシュが必要な場合があります(たとえば、実際にどこから来たのかを確認してください)。

+0

ありがとう! 私のコードを復元しました。 しかし、私は "9c74193 HEAD @ {25}"を見て、違いは ですか? –

+0

あなたがここで尋ねていることを完全にはっきりとはっきりしないかもしれません:出力 '9c74193 HEAD @ {25}'は、短縮IDが9c74193のコミットから "HEAD"が25回移動したことを意味します " 。私の例では、実際のコミット(あなたが 'reset'コマンドで言及したものを除く)のIDを知らなかったので、もちろんプレースホルダーを使用しなければなりませんでした。 –

関連する問題