2016-11-01 3 views
2

git squashをリセットするにはどうすればよいですか?rebase squashをリセットするには?

私はPhpStormを使用しています。私は最後の14日間の仕事からのコミットを押しつぶしました。コミットの "HEAD DEV Refactor gulp file"には、50個以上の潰れたコミットがあります。

再度表示/非表示を解除するにはどうすればよいですか?

enter image description here

答えて

5

通常のGitには "unsquashing" はありません。私はあなたのツールに精通していないので、私の答えはGitのコマンドラインに適用されます。 Windowsの場合、Git bashがインストールされている可能性があります。また、Gitコマンドラインを直接起動する方法もあります。

悪化し、トラブルになっ防ぐために、あなたの状態のバックアップを作成します:ORIG_HEADはあなたが好きなものに設定されている場合

git tag unsquash-backup 

最初のチェック。これは、リベースする前の最後の状態でなければなりません。

git show ORIG_HEAD 

あなたはそれはあなたが戻って行きたい状態であることを確認した場合は、単に通常の方法である、ORIG_HEADが何をしたいなくなった場合、あなたはgit reflogを使うべきではありません

git reset --hard ORIG_HEAD 
git rebase --abort 

を行いますあなたが持ってはならない何かをやったなら、Gitで困ってしまうからです。

git reflog 

は、次に古い探しコミットリストの中([email protected]{8}ようになります)。それはあなたが元に戻ってほしい状態です。コミットの履歴を最初に確認してください。

git log [email protected]{8} 

そして、ブランチをその状態にリセットすることができます。あなたはgit reflogで見つかったコミットしてどこでも[email protected]{8}を代入もちろん

git reset --hard [email protected]{8} 

注:git reset --hardを使用すると、標準の警告が適用され、現在コミットされていない変更が失われます。

+0

Wow :)しかしgit reflogはHEAD @をHEAD @ {41}まで表示します。私はHEADが必要なコミットを見ています{49}それはもっと表示できますか? – Michal

+0

reflogがどれくらい前に戻ってきたかは確かに言えませんが、時にはGitによってクリーンアップされます。 'git reflog'は全てを表示していますので、全部スクロールして41まで見れば、それだけです。 'git fsck --unreachable'を試して、自分のコミットが見つかったかどうかを調べることもできます。 ORIG_HEADを先に試しましたか?あなたのスカッシュの後に何もしなかったらそれはうまくいくはずです。 – DUman

+0

git起源の頭部は、押しつぶされたコミットを示します。私はまずそれを試みます。 – Michal

関連する問題