首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >add remote + swap name with origin,给出错误:"git fetch origin;git merge“有效,!= "git pull”有错误-为什么/如何?

add remote + swap name with origin,给出错误:"git fetch origin;git merge“有效,!= "git pull”有错误-为什么/如何?
EN

Stack Overflow用户
提问于 2011-09-27 01:24:24
回答 1查看 1.1K关注 0票数 1

为了理解这一点,我到处寻找,我感觉它只是从我的手指间滑落。这里有相似但不完全相同的QnAs。

问题是:

代码语言:javascript
复制
$ git pull
Your configuration specifies to merge with the ref 'master'
from the remote, but no such ref was fetched.

git fetch没有给出任何东西,紧随其后的是git merge origin,它写着Already up-to-date.,这是我所期望的,如果git pull“正常”工作的话。

代码语言:javascript
复制
$ cat .git/config
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "official"]
    url = git://github.com/freenet/wininstaller-official.git
    fetch = +refs/heads/*:refs/remotes/official/*
[remote "origin"]
    url = git://github.com/freenet/wininstaller-staging.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    tagopt = --tags
[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "t"]
    remote = origin
    merge = refs/heads/master

$ cat .git/refs/remotes/origin/master
1a30b106723624321366f40a078c9ca4c28394ec

$ cat .git/refs/heads/master
1a30b106723624321366f40a078c9ca4c28394ec

为什么git拉出错误,而git fetch/merge产生预期的输出?

背景:我克隆了一个git repo,freenet/wininstaller-Offical.git,然后看了wininstaller-staging.git,我想“那里可能有一些不是无关紧要的重叠,我应该在第一个repo中添加'staging‘作为遥控器”。是啊,现在我们要用git做饭了!这将是非常有效的。

然后我想“阶段可能更好的跟踪,让我们称之为起源,并让我的本地主跟踪新的起源/主控”。哇!我是Uber-elte!

因此,我如上所述重命名远程,删除本地master,签出跟踪新源/ master的新master。

git fetch; git merge似乎证明了它是正确的!

但是,遗憾的是,git pull出错了。不幸的是我。毕竟不是超级精英:(

提亚

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-27 03:38:22

来自git pull的错误是抱怨它找不到您告诉它合并的分支。我怀疑这是因为您已经为origin配置了tagopts = --tags,并使用该选项,即git fetch doesn't fetch branch heads。尝试删除该行,然后再次运行git pull

为了解释pull / fetch-and-merge的区别:当您手动运行git fetch时,它不会获得--tags选项,所以它会获取分支头。因此,在这一点之后,origin/master将存在,并且可以从中合并。

另一个值得注意的地方是:使用比git merge origin更显式的git merge origin/<branch-name>更正常。在更不寻常的情况下,git将origin解释为分支refs/remotes/origin/HEAD -即您上次从远程存储库origin中获取的当前分支(或提交)。为了避免混淆,最好还是坚持使用git merge origin/<branch-name>

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7558791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档