やらかし内容
-
git rebase --hard
で必要な変更も消してしまった。- Source Treeだと
現在のブランチをこのコミットまでリセット
、(ブランチ名)をこのコミットまで戻す
をHardで実行
- Source Treeだと
-
必要なブランチを削除してしまった
-
など。。。
git reflogとは?
git reflog
とは、Gitの操作履歴を見ることができるコマンド
$ git reflog
c2344c123 (HEAD -> develop, origin/develop, origin/HEAD) HEAD@{0}: pull origin develop: Fast-forward
b452355c0 HEAD@{1}: checkout: moving from master to develop
d52edfc46 HEAD@{2}: checkout: moving from develop to master
b153446c9 HEAD@{3}: reset: moving to b953044c833ad515f06be9ba9c32111a353b65f3
上記のログだと↓のようにGit操作が行われている。
- b953044c833ad515f06be9ba9c32111a353b65f3のコミットにリセット
- developブランチからmasterブランチにチェックアウト
- masterブランチからdevelopブランチにチェックアウト
- developブランチでpull
やらかした操作をリセットする
先ほどのgit reflog
で操作履歴を確認後、git reset --hard
を使いやらかした操作の一つ前に戻ることでやらかしの前に状態を戻すことができる。
git reset --hard HEAD@{1}
まとめ
- 追加したファイルをプッシュする前に
git reset
で消してしまった - プッシュ前にブランチを削除してしまった
など、Gitでやらかしてしまった場合でも、Gitなら大体復元することができます。
困った時はgit reflog
を使ってみてください。