3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

git で間違ってリビジョンを消してしまった時にできること

Posted at

はじめに

つい先日、masterブランチを開発ブランチにマージした際にやらかしてしまい。
開発ブランチ上のコミットが消えて(見えなくなって)、かなり焦ることがありました。
その際、.git配下のファイルから復帰が出来たので、その時のメモになります。

やらかしたこと

なにをしていたか

  • 開発ブランチで開発中だった
  • hotfix 対応があった
  • hotfix 対応部分を開発ブランチに取込もうと、マージした
  • 冗長なコミットに気付く
  • ログを綺麗にしようと思いたち、リビジョンを戻した
  git reset --hard <revision>
  • 冗長なコミットをまとめて修正
  • まとめて push
git push -f origin <開発ブランチ>

正確に把握していない(ボーっと作業していた)ので、
なにか間違いがありそうですが、たぶんこんな感じです。

・・・ここ3日で作ったコミットが、ない!?

リモートリポジトリを眺めていて異変に気付きました。

「あれ?ブランチ間で差分が出てない。」

「開発ブランチにしかないコミットがあるはずなのに?」

「・・・ここ3日で作ったコミットが、ない!?」

久しぶりに心臓が冷える思いがしました。。
GWに出勤して作ったのに・・。

何をして復旧したか?

git を信じて revision ログを探す

心臓は冷えましたが、「git なら残っているはず」と信じて、
.git 以下のファイルを見てみました。
以下、ほぼ名前からの推測と勘で、目的のファイルに一発で
辿り着きました。

直感的な名付けとフォルダ分けがされていて本当~~~~に助かりました。
さすが git様。
ありがとう、いいツールです。

以下、見て行った順に画像を貼ります。

.git

01.dotgit.png
ここは、フォルダ名を信じて logs を見ます。

.git/logs

02.logs.png
HEADではないので、refs を見てみます。

.git/logs/refs

03.refs.png
remoteではないので、heads を見てみます。

.git/logs/refs/heads

04.heads.png
featureフォルダが見えました。かなり期待が持てますね。。どきどき
※ ちなみに、feautreってなんでしょうね。

.git/logs/refs/heads/feature

画像は割愛していますが、ありました。feature 毎のファイルが。
さっそく、やらかしたfeatureと同名のファイルを見てみます・・!

repository

repository.png
きました・・。
コミット時のリビジョンが残っています・・・。

これで、git reset すれば・・!どきどき

git reset --hard <revision>

復旧しました!

私の場合は、この作業でやらかす前に戻ることができました!
(3日分の作業が無駄にならずに済みました・・!)

教訓

フォルダ分け、名付けは本当に大事。

こんなミスを他の人が犯すのかは疑問ですが(苦笑)
どなたかの参考になれば幸いです。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?