Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@kekosh

「reference broken」を解消してGitHubから変更をPullする

TL;DL

サブPCで編集した内容をGitHubにアップロードしたあと、メインPCで変更内容をPullしようと思ったら、
「reference broken」とかいうエラーになって変更を反映できなくなってしまった。

この問題について解決方法を記載する。

現象

(notisumma) D:\work\venv\notisumma>git pull origin master
From github.com:xxxxxx/notisumma
 * branch            master     -> FETCH_HEAD
error: cannot lock ref 'refs/remotes/origin/master': unable to resolve reference 'refs/remotes/origin/master': reference broken
 ! [new branch]      master     -> origin/master  (unable to update local ref)

原因

正直原因は不明。
gitへのpush途中でプロセスが切れるような現象が発生した場合にreferenceファイル('refs/remotes/origin/master')が
破損して発生することがあるらしい。

今回はそんな事象が発生した覚えはないが、サブPCで編集したファイルをアップロードする際、
コンソールからGitコマンドでpushしたのではなく、GitHubのリポジトリページにドラッグ&ドロップして
アップロードしたのが原因なのかと思う。(検証はしていない)

解決方法

1.git gc --auto

Gitは時々 “auto gc” と呼ばれるコマンドを自動的に実行します。 大抵の場合、このコマンドは何もしません。 ですが、緩いオブジェクト(packfileの中に入っていないオブジェクト)やpackfileがあまりに多い場合は、Gitは完全な(full-fledged)git gc コマンドを起動します。 “gc” はガベージコレクト(garbage collect)を意味します。このコマンドは幾つものことを行います。すべての緩いオブジェクトを集めてpackfileに入れ、複数のpackfileをひとつの大きなpackfileに統合し、さらにどのコミットからも到達が不可能かつ数ヶ月間更新がないオブジェクトを削除します。

詳しくは調べてないが、このコマンドを実行することで今回問題が発生している'refs'フォルダ内がガーベジコレクトされて
問題が解決することがあるらしい。

結果

解消されなかった。
発生する現象自体変化なし

2.問題のファイルを手動で削除する。

解決するコマンドがわからないなら、問題が発生するファイルを力ずくで消してしまおう。(昭和生まれ思考)
スクリーンショット (2).png

結果

正常にpullすることができた。

(notisumma) D:\work\venv\notisumma>git pull origin master
From github.com:xxxxx/notisumma
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> origin/master
Updating 1916fff..0f77dfa
Fast-forward
 sample/sample.zip | Bin 0 -> 803530 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 sample/sample.zip

まとめ

手動作業最強。

冗談はさておき、普段業務でGitを使うことはないので、昔勉強したコマンドとかTipsをほとんど忘れてる。
やっぱ日々使ってないとだめだと痛感した。

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
kekosh
今年35歳になる予定の窓際業務系SEです。 嫌いな言葉は「クソコード」です。 改善点もりもりのコードでも本人は頑張って書いています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?