前提・実現したいこと
SourceTreeで管理しているローカルリポジトリのブランチ(History)がすべて消えていました。
故意に削除したわけではなく、ソフトを立ち上げたらブランチが消えていて管理していたファイルがすべてステージされた状態でした。
ブランチを復元する方法はありますか?
試したこと
ブランチが消えた原因としてPCがブルースクリーンで落ちたことが考えられました。
最新の復元ポイントに復元しましたがSourceTreeの設定などは戻りませんでした。
リポジトリの再読み込みもしてみましたが、ブランチは消えたままでした。
補足情報
Windows 10 pro 64bit
SourceTree Ver3.3.8
内蔵Gitバージョン 2.24.1
リポジトリの管理はローカルのみです。
gitフォルダの中には管理していたログ(ブランチ)と思われるファイルなどが残っているようです。
.git\logs\refs\heads\master
.git\refs\heads\master
など
現状、『新規リポジトリ作成をした状態』とほぼ同じですが、退避させていたスタッシュ情報だけは残っています。
何もコミットされていない状態になっているのでmasterブランチも存在しません。
他にも管理しているローカルリポジトリはありますが、ブランチが消えてしまったのは1件のみです。
CLIは苦手なので、コマンドプロンプトを使った操作方法であれば、わかりやすく解説(またはコピペで済む方法で)していただけると助かります。
解決方法
アドバイスをいただき無事に解決しましたので、解決手順をまとめました。
対象のgitフォルダはC:\Users[ProjectFolder].git
と仮定
- 念のためにリポジトリをどこかにバックアップ
C:\Users
└[ProjectFolder]
│└.git(バックアップする)
- リポジトリをProjectFolderの同層へclone
コマンドプロンプトを起動 Windowsキー + R
cmdと入力
カレントディレクトリを移動 cd C:\Users[ProjectFolder]
リポジトリをクローン git clone C:\Users[ProjectFolder] newProjectFolder
C:\Users
├[ProjectFolder]
│└.git(バックアップした)
├newProjectFolder(新しく作った)
│└.git(cloneした)
- cloneした.gitフォルダをC:\Users[ProjectFolder].gitに上書き(コピペ)
C:\Users
├[ProjectFolder]
│└.git(cloneしたフォルダで上書き)
- C:\Users[ProjectFolder]内の.gitフォルダ以外のファイルをどこかに退避
- SourceTreeでブランチをダブルクリックすると履歴が復活
- 退避したファイルを元に戻して上書き(コミットされていない差分が復活)
以上の手順で消えたブランチを復活させることができました。
補足:日本語(マルチバイト)名のブランチが表示されない場合
.git\logs\refs\heads
と.git\refs\heads
にあるマルチバイトブランチファイル(以下、jpブランチ)をシングルバイトにリネーム.git\logs
のHEADファイルの中身のjpブランチをリネームしたシングルバイト名に置換.git\logs\refs\heads
のjpブランチファイルから最新のコミットID(一番下の行の左から2つ目のコードの塊)をコピー.git\refs\heads
のjpブランチファイルにコピーしたコミットIDを貼り付けて保存- SourceTreeでリポジトリを更新するとjpブランチが復活
回答1件
あなたの回答
tips
プレビュー