突然间,我无法再从遥控器中取出......
$git fetch origin
! [rejected] master -> origin/master (non-fast-forward)
我不知道该寻找什么或发生了什么,因为它一直在工作。 关于配置没什么可说的:
[remote "origin"]
url = http://xx.xxx.xx/project.git
fetch = refs/tags/*:refs/tags/*
fetch = refs/heads/*:refs/remotes/origin/*
push = refs/tags/*:refs/tags/*
push = refs/heads/master:refs/heads/master
其他同事可能在遥控器上推了一些东西,但是我们这么做很长时间没有问题......
答案 0 :(得分:3)
正如您自己想的那样,您的fetch refspec是非标准的:缺少“+”前缀。它是有效,它不是Git默认设置的,因为默认情况下它会在取出时覆盖远程分支的内容。
Git为命名的遥控器添加的默认refspec如下所示:
$ git config --get remote.origin.fetch
+refs/heads/*:refs/remotes/origin/*
因此,您应该只需撤消手动完成的操作并坚持使用默认值,直到您真正了解refspecs和提取工作的方式(至少阅读git-fetch
manual page)。
git merge origin master
表示«将分支“origin”和“master”合并到本地分支中»(进行所谓的“章鱼合并”)。
您要么git pull origin master
(这意味着«从“来源”获取分支“master”,然后将其合并到当前已检出的分支»)或git fetch origin
后跟git merge origin/master
,其中“origin / master”指的是git fetch origin
执行其工作后所谓的创建/更新的远程分支(受上述第一点的影响)。
最重要的是,您似乎尝试通过编辑配置文件而不是仅运行git remote add <name> <git_url>
来创建远程。除非你真正了解内部运作,否则不要这样做。