Sponsor Link
環境&対象
- git version 2.30.1
git のブランチを復元する方法
git の branch を削除
Git の branch は、以下の方法で削除することができます。
% git branch -D <branch name>
Branch を trunk にマージした後や、不要になった branch は残しておかずに、削除する方が管理面からは推奨されています。
ただ、誤って branch を削除してしまうこともありますよね。勘違いだったりが原因です。
削除した branch の中身が 新規実装機能だったりすると、頭真っ白になります。
なにしろ、それまでの 努力がなくなってしまったのですから・・・
でも、git を使っているなら大丈夫です。削除してしまった branch もまだそこに存在しています。
git の branch を復元
操作例の状況説明
以下の状況を前提として操作例を説明していきます。
- trunk は、master という名称
- branch は、NewBranch という名称
- NewBranch でファイルを編集して commit した
- master に切り替えて作業していた
- NewBranch を master にマージする前に誤って削除してしまった
削除後は、NewBranch という branch は見えません。(当たり前)
でも、git の履歴の中には残っていますので、その履歴を使って 復元していきます。
復元作業を開始する前に、落ち着くのが大切です。
ログの確認
まずは、git のログを確認します。ログといっても、通常のログではなく ブランチの移動等のログを確認します。以下のコマンドで、ログを確認してください。
% git reflog
そうすると、以下のようなログが確認できます。
% git reflog
0ec60f5 (HEAD -> master) HEAD@{0}: checkout: moving from NewBranch to master
6a4c9e1 HEAD@{1}: commit: update test.swift
0ec60f5 (HEAD -> master) HEAD@{2}: checkout: moving from master to NewBranch
0ec60f5 (HEAD -> master) HEAD@{3}: commit (initial): add dummy file
一番上にある行が最新の操作です。下に行くに従って古い操作を表しています。それぞれの行の意味を確認していきます。
// master を checkout した
0ec60f5 (HEAD -> master) HEAD@{0}: checkout: moving from NewBranch to master
// commit した (コメントによると test.swift をアップデートした)
6a4c9e1 HEAD@{1}: commit: update test.swift
// NewBranch を checkout した
0ec60f5 (HEAD -> master) HEAD@{2}: checkout: moving from master to NewBranch
// commit した(コメントによると 新しいファイルを追加した)
0ec60f5 (HEAD -> master) HEAD@{3}: commit (initial): add dummy file
復元したい branch に commit した 操作を探す
ログを確認していき、削除してしまった branch に最後に commit したものを探します。
上記の例では、2行目の”6a4c9e1 HEAD@{1}: commit: update test.swift” がそれに該当します。
新しい branch として復元する
git に対して、新しい branch を作成します。branch 作成時に、操作を指定して branch を作成することができます。
% git branch recover HEAD@{1}
% git branch
* master
recover
この時の “recover” branch が復元したい branch を含む branch になっています!
以下のコマンドで、checkout して、内容が戻っているか確認すれば OK です。
% git checkout recover
まとめ:あやまって削除した branch の復元方法
- 落ち着く
- git reflog を使用して、削除してしまった branch への最終コミットを探す
- 最終コミット操作を指定して、branch を作成する
- 作成した branch を checkout すると、削除された branch が復元されている!
git おすすめ本
いまや git は必須ツールの1つになりました。
まずは、一通りの使い方をおさらいしておくのがおすすめです。
# 意外と色々なことができます。
説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。
Sponsor Link