29
26

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 3 years have passed since last update.

ブランチが壊れたときの修正方法

Last updated at Posted at 2020-06-19

ブランチが壊れた

なんかブランチが壊れた。
症状は、全てのファイルを新規ファイルと認識していて、スタッシュもチェックアウトもできない。
スタッシュをしようとすると、下記のエラーが出てきます。

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

スタッシュしようとしたら変更点ないよって言われたので、復元成功です。

参考

29
26
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
29
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?