Git 1.6.4.2を使用してgit pull
を実行すると、このエラーが発生します。
error: unable to resolve reference refs/remotes/Origin/LT558-optimize-sql: No such file or directory
From git+ssh://remoteserver/~/misk5
! [new branch] LT558-optimize-sql -> Origin/LT558-optimize-sql (unable to update local ref)
error: unable to resolve reference refs/remotes/Origin/split-css: No such file or directory
! [new branch] split-css -> Origin/split-css (unable to update local ref)
私はgit remote Prune Origin
を試しましたが、役に立ちませんでした。
次のコマンドを使ってローカルリポジトリをクリーンアップしてみてください。
$ git gc --Prune=now
$ git remote Prune Origin
man git-gc(1):
git-gc - Cleanup unnecessary files and optimize the local repository
git gc [--aggressive] [--auto] [--quiet] [--Prune=<date> | --no-Prune]
Runs a number of Housekeeping tasks within the current repository, such as compressing file revisions
(to reduce disk space and increase performance) and removing unreachable objects which may have been
created from prior invocations of git add.
Users are encouraged to run this task on a regular basis within each repository to maintain good disk
space utilization and good operating performance.
man git-remote(1):
git-remote - manage set of tracked repositories
git remote Prune [-n | --dry-run] <name>
Deletes all stale remote-tracking branches under <name>. These stale branches have already been
removed from the remote repository referenced by <name>, but are still locally available in
"remotes/<name>".
私にも起こった。私の場合、悪い参照はマスターでした、そして私は以下をしました:
rm .git/refs/remotes/Origin/master
git fetch
これによりgitはrefファイルを復元しました。その後、すべてが期待通りに機能しました。
これは私のために仕事をしました:
git gc --Prune=now
私にとっては、エラーが発生しているファイルをフォルダ.git/refs/remotes/Origin/
から削除するように働きました。
以下のコマンドを実行してください。
rm .git/refs/remotes/Origin/master
git fetch
git branch --set-upstream-to=Origin/master
念のために、
.git/refs/remotes/Origin/master
が何かを知る必要がある場合は、 Git References の Remotes セクションを読んでください。
私はこれと同じ問題を抱えていて、それがエラーになっていたファイルに行くことによってそれを解決しました:
\repo\.git\refs\remotes\Origin\master
このファイルはnullでいっぱいでした、私はそれをgithubからの最新のrefで置き換えました。
私の場合、ディレクトリ.git
の下にあるすべての削除参照ファイルを削除した後に、問題は解決しました。
メッセージを見れば、それはあなたがどのファイルを削除する必要があるかをあなたに教えてくれるでしょう(具体的に)。
削除するファイルは.git/refs/remotes
の下にあります。
私はそこにあるすべてのファイルを削除して、gc Pruneを実行しました。
git gc --Prune=now
その後は、すべてうまくいきます。
参照が壊れるとどうなるかを追加したいだけです。
私のシステム(Windows 7 64-bit)では、a_ bsod _ happens のとき、保存されている参照ファイルのいくつか(たぶん現在BSOD発生時に開かれている)が上書きされます。 NULL
文字(ASCII 0).
他の人が言ったように、それを修正するには、単にそれらの無効な参照ファイルを削除し、リポジトリを再取得または再取得するだけで十分です。
エラー: cannot lock ref 'refs/remotes/Origin/some/branch': unable to resolve reference 'refs/remotes/Origin/some/branch': reference broken
解決策: ファイル%repo_root%/.git/refs/remotes/Origin/some/branch
を削除する
それを試してみてください:
git gc --Prune=now
git remote Prune Origin
git pull
git fetch --Prune
は私のためにこのエラーを修正しました:
[marc.zych@marc-desktop] - [~/code/driving] - [Wed May 10, 02:58:25]
[I]> git fetch
error: cannot lock ref 'refs/remotes/Origin/user/janek/integration/20170505': 'refs/remotes/Origin/user/janek/integration' exists; cannot create 'refs/remotes/Origin/user/janek/integration/20170505'
From github.com:zooxco/driving
! [new branch] user/janek/integration/20170505 -> Origin/user/janek/integration/20170505 (unable to update local ref)
From github.com:zooxco/driving
[marc.zych@marc-desktop] - [~/code/driving] - [Wed May 10, 02:58:30]
[I]> git fetch --Prune
- [deleted] (none) -> Origin/user/janek/integration
ただし、これは問題のブランチがリモートで削除されたことを前提としています。
git gc --Prune=now
が助けにならないのであれば。 (私のような不運)
私がしたのは、ローカルでプロジェクトを削除し、プロジェクト全体をもう一度複製します。
これを試して:
git pull Origin Branch_Name
Branch_Name
、あなたが現在いるブランチ。
git pull
だけを実行すると、他に作成されたブランチ名もすべて取得されます。
だからあなたがこれを得ている理由です:
! [new branch] split-css -> Origin/split-css (unable to update local ref)
一緒に仕事ができました
git remote update --Prune
私は同じ問題を抱えていました。私は次の手順に従います
1)問題のあるブランチを他のブランチに切り替えます
2)その枝を削除する
3)もう一度チェックアウトする。
注: - コミットしていない変更を隠して、元に戻すことができます。
私にとっては、feature/phase2
という名前のローカルブランチとfeature/phase2/data-model
というリモートブランチがありました。名前の衝突が問題の原因だったので、私は私のローカルブランチを削除しました(あなたがそれを維持するために必要なものがあればあなたはそれを改名することができます)
私はgit Prune Origin
を使いました、そしてそれは仕事をしました。
作曲家のアップデートでも同じ問題がありました。しかし、私にとっては、作曲家のキャッシュをクリアし、ベンダーフォルダの内容を削除した後にのみ機能しました。
rm -rf vendor/*
git gc --Prune=now
git pull
composer clear-cache
composer update my/package
リポジトリが削除され、同じ名前で作成されたときに同じ問題に直面しました。私がリモートURLを再設定のようなときにのみうまくいきました。
git remote set-urlオリジン[GIT_REPO_URL]
リモートURLを確認します。
git remote -v
これで、すべてのコマンドが通常どおり動作するはずです。
SourceTreeを使用している間、私はこの問題を抱えていました。私はもう一度引っ張ろうとしました、そしてそれは働きました。私はあまりにも早くブランチをチェックしていました(チェックアウト):)。
私の状況はポスターのものとは少し異なります。というのも、私のリポジトリは、明らかに破損することなく比較的協力的であったからです。
Macの開発者がブランチ名に「>」記号よりも大きいブランチを作成したときに、この問題が発生しました。
これにより、TeamCityおよびSourceTreeを実行しているローカルWindowsベースのコンピューターで問題が発生しました。 BitBucketは問題なく通過させました。
ユーザーを解決するには、ブランチを削除して再作成しました。それは素晴らしく、簡単でした。
# remove the reference file of the branch "lost"
rm -fv ./.git/refs/remotes/Origin/feature/v1.6.9-api-token-bot-reader
# get all the branches from the master
git fetch --all
# git will "know" how-to handle the issue from now on
# From github.com:futurice/senzoit-www-server
# * [new branch] feature/v1.6.9-api-token-bot-reader ->
# Origin/feature/v1.6.9-api-token-bot-reader
# and Push your local changes
git Push
この問題を引き起こす可能性がある特定のケースを書き留めます。
ある日、私は "feature/subfeature"という名前のブランチをプッシュしましたが、 "feature"ブランチはリモートにありました。
その操作は私の側では何のエラーもなくうまく働きましたが、私の同僚が任意のブランチを取得したり引っ張ったりしたとき、それらはすべて同じエラーメッセージunable to update local ref
、cannot lock ref 'refs/remotes/Origin/feature/subfeature
を持っていました。
これは、remote(git Push --delete Origin feature
)のfeature
ブランチを削除してから、同僚のレポジトリでgit remote Prune Origin
を実行することで解決され、* [pruned] Origin/feature
を含むメッセージが生成されました。
そのため、git fetch
は内部的にgitのsubfeature
フォルダーにfeature
refを作成しようとしていましたが(.git/...)、feature
refが既に存在していたためフォルダーの作成に失敗しました。
git bundle
で作成したファイルからクローンを作成しようとしたときにこの問題が発生しました。リポジトリをクローンできなかったため、他の回答はどれもうまくいきませんでした(git gc
およびファイルの削除/編集は問題外でした)。
しかし、これを修正する別の方法がありました - .bundle
ファイルのソースファイルは、次のもので始まりました:
# v2 git bundle
9a3184e2f983ba13cc7f40a820df8dd8cf20b54d HEAD
9a3184e2f983ba13cc7f40a820df8dd8cf20b54d refs/heads/master
9a3184e2f983ba13cc7f40a820df8dd8cf20b54d refs/heads/master
PACK.......p..x...Kj.0...: (and so on...)
Vimで4行目を削除するだけで問題は解決しました。
今日問題にぶつかった。
トラブルシューティング方法:Windowsサーバー上のSourceTreeでは、管理者としてそれを実行しようとするかもしれません。これにより、ドメイン内のWindows Server 2012 R2上のAtlassian Source Tree 2.1.2.5で "ローカル参照を更新できません"という私の問題が修正されます。
あなたもこの状況を再現することができれば、それは問題が許可の問題が原因であることを証明しています。ドリルダウンして根本的な原因を見つけるのが賢明です - おそらく特定のファイルは他のユーザが所有しているなど - そうでなければ歓迎されない副作用があります。