完整的信息:

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)

当前回答

如果你在一个不区分大小写的文件系统(Windows或OS X)下运行git,如果有两个同名但大写不同的分支,就会发生这种情况,例如user_model_changes和user_model_changes,因为两个远程分支将匹配相同的跟踪引用。

删除错误的远程分支(你不应该有只有大小写不同的分支),然后git远程删除原点,一切都应该正常工作

其他回答

经过不断的搜索,这是对我有效的解决方案,需要清除/移除上游

git branch --unset-upstream

永久解决

Git update-ref -d解决了这个错误的实例,例如:

git update-ref -d refs/remotes/origin/user

注意,这不会影响远程。

在我的例子中,后续的git获取再次获取该分支,并且后续的git获取/拉不再给出错误“remote ref is at but expected”。

如果这不起作用,临时修复:

还要注意的是,如果你不关心所讨论的分支(例如,你只想更新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

我也有同样的问题,因为我重置到一个旧的提交,即使我已经推送到远程分支。

我通过删除我的本地分支,然后签出原始分支git checkout origin/my_branch,然后执行git checkout my_branch来解决这个问题

我遇到过这个问题,我的解决方案如下:

步骤1:

请先执行该命令。 git gc—Prune=现在

步骤2:

如果运行步骤1命令后没有错误,则在终端中运行下面的命令。 git远程删除源文件

我希望这能解决你的问题。

我必须从命令行中删除我的分支:

.git\refs\remotes\{my remote}\{**my branch**}

然后手动操作:

git pull [remote_name] [branch_name]

我找到了改动的地方。

注意:我正在使用SourceTree,无法进行拉取。