ローカルとリモート両方のブランチを消してしまった場合の戻し方です。
SourceTreeを使用しています。
コミット
状況を再現するためmasterブランチを作りコミットをします。
その後masterからdevelopブランチを作り2つコミットします。
コミットの戻し方(新しいブランチ作成)
ローカルにもリモートにもブランチが無いため、Gitのコマンドにて戻してみます。
git reflog
を行う事でコミットのログを見る事が出来ます。
$ git reflog
b2a9d16 HEAD@{0}: checkout: moving from develop to master
a5778af HEAD@{1}: checkout: moving from master to develop
b2a9d16 HEAD@{2}: checkout: moving from develop to master
a5778af HEAD@{3}: commit: test3
9281d3c HEAD@{4}: commit: test2
b2a9d16 HEAD@{5}: checkout: moving from master to develop
b2a9d16 HEAD@{6}: commit (initial): test1
この中から戻りたいコミットのIDと新しいブランチ名を指定する事で戻れます。
git branch 新しいブランチ名 コミットID
$ git branch develop a5778af
新しくdevelopブランチが作成されtest3のコミットに戻れました。
コミットの戻し方(現在のブランチを使用)
同じようにgit reflog
のコミットにgit reset コミットID
で現在のブランチで指定コミットに戻る事も出来ます。
$ git reflog
b2a9d16 HEAD@{0}: checkout: moving from develop to master
a5778af HEAD@{1}: checkout: moving from master to develop
b2a9d16 HEAD@{2}: checkout: moving from develop to master
a5778af HEAD@{3}: commit: test3
9281d3c HEAD@{4}: commit: test2
b2a9d16 HEAD@{5}: checkout: moving from master to develop
b2a9d16 HEAD@{6}: commit (initial): test1
$ git reset a5778af
現在のブランチ(今回はmaster)のまま、test3のコミットに戻れました。