ブランチが壊れた
なんかブランチが壊れた。
症状は、全てのファイルを新規ファイルと認識していて、スタッシュもチェックアウトもできない。
スタッシュをしようとすると、下記のエラーが出てきます。
You do not have the initial commit yet
多分、プッシュしてる途中でPCが謎の再起動を始めたせい。
途中だったプッシュはgitlabに反映されているから問題ないように見えるけど、ローカルには問題しかない。
もう一度PC再起動してみたけど意味ありませんでした。
修正手順
まず、エラーを確認します。
$ git log
fatal: your current branch appears to be broken
がっつり、ブランチが壊れたって書かれています。
次に、gitのログを確認します。
※ブランチ名はfeature_20200619
とします
$ ls .git/logs/refs/heads/feature_20200619
.git/logs/refs/heads/feature_20200619
慎重派なので、本当はディレクトリ1つずつ確認していって、ブランチのところまでたどり着きました。
とにかく、ログがあることを確認したので、開きます。
$ vim .git/logs/refs/heads/feature_20200619
こんな感じのログファイルが開きました。
gitのログファイル初めて見た。
ハッシュは短く編集してます。
000000000000000 81df1698f65da66 {ユーザー名} <{メールアドレス}> {タイムスタンプ} branch: Created from HEAD
81df1698f65da66 cf3db6d02cf79e1 {ユーザー名} <{メールアドレス}> {タイムスタンプ} commit: コミットメッセージ1
cf3db6d02cf79e1 89afc1b749f3a6c {ユーザー名} <{メールアドレス}> {タイムスタンプ} commit: コミットメッセージ2
89afc1b749f3a6c aabf716e45789eb {ユーザー名} <{メールアドレス}> {タイムスタンプ} commit: コミットメッセージ3
コミットのカズだけログがあるっぽい。
最後のログのaabf716e45789eb
をコピーします。
次に下記コマンドで別のファイルを開きます。
$ ls .git/refs/heads/feature_20200619
.git/refs/heads/feature_20200619
$ vim .git/refs/heads/feature_20200619
文字化けっぽい文字の羅列が表示されたので、それを消して先程コピーしたハッシュで上書きします。
$ git stash save test
No local changes to save
スタッシュしようとしたら変更点ないよって言われたので、復元成功です。