San*_*ngi 211 git pull git-pull
完整信息:
error: Ref refs/remotes/origin/user is at 3636498c2ea7735fdcedc9af5ab3c8689e6abe77 but expected a21359c6cc2097c85775cde6a40105f4bd7100ec
From github.com:{github project url}
! a21359c..6273ffc user -> origin/user (unable to update local ref)
Run Code Online (Sandbox Code Playgroud)
kri*_*sta 212
如果您在不区分大小写的文件系统(Windows或OS X)下运行git,如果有两个具有相同名称但大小写不同的分支,则会发生这种情况,例如user_model_changes,User_model_changes因为两个远程分支将匹配相同的跟踪引用.
删除错误的远程分支(你不应该只有大小写不同的分支),然后git remote prune origin一切都应该工作
JDi*_*teo 170
git update-ref -d 解决了我的错误实例,例如
git update-ref -d refs/remotes/origin/user
Run Code Online (Sandbox Code Playgroud)
请注意,这不会影响远程.
在我的情况下,随后git fetch再次获取该分支,并且在git抓取/拉取之后不再给出错误"远程ref在但是预期".
另请注意,如果您不关心相关分支(例如,您只想更新master,而不是origin/user),则git pull解决方法是获取然后合并您关注的特定分支,例如
git fetch # may give an error for a particular branch, but other branches will still be successfully fetched
git merge origin/master
Run Code Online (Sandbox Code Playgroud)
小智 43
只需删除".git\refs\remotes\origin"下的文件夹和文件即可.当你没有未按下的更改时工作
ela*_*ver 35
我跑这个来解决问题:
git gc --prune=now
Run Code Online (Sandbox Code Playgroud)
Nar*_*ain 26
逐个使用以下两个命令.
git gc --prune=now
git remote prune origin
Run Code Online (Sandbox Code Playgroud)
这将解决您的问题.
小智 12
我不得不从我的命令行删除我的分支:
.git\refs\remotes\{my remote}\{**my branch**}
Run Code Online (Sandbox Code Playgroud)
然后手动执行:
git pull [remote_name] [branch_name]
Run Code Online (Sandbox Code Playgroud)
我能够拉动变化.
注意:我使用的是SourceTree而无法完成拉动.
小智 8
按以下顺序运行以下命令
git gc --prune=now
git remote prune origin
git pull
Run Code Online (Sandbox Code Playgroud)
硬重置也可以解决问题
git reset --hard origin/master
Run Code Online (Sandbox Code Playgroud)
我尝试了多种选择,但没有一个选择对我有用。下面的命令对我有用。把它放在这里,如果它可以帮助人们防止其他选择不起作用。
git pull -p
-p --prune 在获取之前,删除远程上不再存在的任何远程跟踪引用。如果仅由于默认标签自动跟踪或由于 --tags 选项而获取标签,则标签不会受到修剪。但是,如果由于显式引用规范(在命令行上或在远程配置中,例如,如果使用 --mirror 选项克隆远程)而获取标签,则它们也会受到修剪。提供 --prune-tags 是提供标签 refspec 的简写。
--来源:https ://git-scm.com/docs/git-pull#Documentation/git-pull.txt--p
更清晰的步骤
在终端
cd /.git/refs/remotes/origin
Run Code Online (Sandbox Code Playgroud)做 ls,你会看到一些分支和HEAD
删除您认为有问题的分支
rm branchname
Run Code Online (Sandbox Code Playgroud)如果它不起作用,请删除所有分支/HEAD
希望它现在有效。
小智 5
不幸的是,像 prune 和 reset 或 push 这样的 GIT 命令对我不起作用。修剪工作一次,然后问题又回来了。
对我有用的永久解决方案是手动编辑 git 文件。只需转到项目的 .git 文件夹,然后在 Notepad++ 之类的文本编辑器中打开文件packed-refs。然后导航到失败分支的行并将其 guid 更新为预期的。
如果你有这样的消息:
错误:无法锁定引用“refs/remotes/origin/feature/branch_xxx”:位于 425ea23facf96f51f412441f41ad488fc098cf23 但预期为 383de86fed394ff1a1aecd7a522d8986ad
然后在文件中找到带有refs/remotes/origin/feature/branch_xxx. 那里的 guid 将是预期的(第二个)一 - 383de86fed394ff1a1aeefc4a522d886adcecd79。您需要将其更改为真正的(第一个) - 425ea23facf96f51f412441f41ad488fc098cf23。
重复其他失败的分支,你会很高兴继续。有时在重新获取后,我不得不重复我之前已经“修复”的相同分支。在重新获取 GIT 更新 guids 并为您提供最新的。
无论如何,问题不是表演障碍。分支列表得到更新。这倒是一个警告。
| 归档时间: |
|
| 查看次数: |
101184 次 |
| 最近记录: |