使用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远程梅干起源,但没用。


当前回答

今天刚遇到问题。

故障排除方法:使用Windows服务器上的SourceTree,您可以尝试以管理员身份运行它。这解决了我在域中Windows Server 2012 R2上的Atlassian源树2.1.2.5上“无法更新本地引用”的问题。

如果您也可以复制这种情况,则证明问题是由权限问题引起的。最好深入研究并找到根本原因-可能某些特定文件是由其他用户等拥有的-否则会有一个不受欢迎的副作用:您将不得不以管理员身份运行SourceTree。

其他回答

对我来说,它可以从.git/refs/remotes/origin/文件夹中删除引发错误的文件。

我能够与

git remote update --prune

我在使用SourceTree时遇到了这个问题。我试着再拉一次,结果成功了。我想我切换分行(结账)太快了。

我的情况与海报有点不同,因为我的存储库相对合作,没有任何明显的腐败。

在尝试从git捆绑包创建的文件中克隆时遇到此问题,其他答案都无效,因为我无法克隆repo(因此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删除第四行就解决了这个问题。

尝试使用以下方法清理本地存储库:

$ 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远程(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>".