このコマンドを元に戻すにはどうすればいいですか?
git reset HEAD~
ベストアンサー1
短い答え:
git reset 'HEAD@{1}'
長い答え:
Git はすべての参照更新 (チェックアウト、リセット、コミット、マージなど) のログを保持します。次のように入力して表示できます。
git reflog
このリストのどこかに、失ったコミットがあります。今入力したgit reset HEAD~
内容を元に戻したいとします。私の reflog は次のようになります。
$ git reflog
3f6db14 HEAD@{0}: HEAD~: updating HEAD
d27924e HEAD@{1}: checkout: moving from d27924e0fe16776f0d0f1ee2933a0334a4787b4c
[...]
最初の行は、HEAD
0 ポジション前 (つまり、現在の位置) が 3f6db14 であることを示しています。これは、 にリセットすることによって取得されましたHEAD~
。2 行目は、HEAD
1 ポジション前 (つまり、リセット前の状態) が d27924e であることを示しています。これは、特定のコミットをチェックアウトすることによって取得されました (ただし、これは現時点では重要ではありません)。したがって、リセットを元に戻すには、git reset HEAD@{1}
(またはgit reset d27924e
) を実行します。
一方、それ以降に HEAD を更新する他のコマンドを実行した場合、必要なコミットはリストの先頭に表示されず、を検索する必要がありますreflog
。
reflog
最後に注意点:リセットを解除したい特定のブランチ (たとえば、master) の を確認する方が、 を確認するよりも簡単かもしれませんHEAD
。
$ git reflog show master
c24138b master@{0}: merge origin/master: Fast-forward
90a2bf9 master@{1}: merge origin/master: Fast-forward
[...]
一般的なものよりもノイズが少ないはずですHEAD reflog
。