我是git的新手,我被困在git fetch上(我对TFS和SVN有更多的经验,所以欢迎任何类比:)
所以我在Github找到了一个我分叉的项目:
我做了一些签到,也做了一个git pull来从源获取最新的更改,在某些时候,我想我点击同步按钮(我正在使用AndroidStudio BTW)我从这里迷路了
它生成了这个commit,我真的不明白,从这里看来,我似乎无法再从源获取最新的添加内容(黑色源上的最后4个更改)
我在git fetch上遇到以下错误:
致命:refs / remotes / origin / pr / 34跟踪refs / pull / 34 / head和 参考文献/头/ PR / 34
https://github.com/MohammadAG/Xposed-Tinted-Status-Bar/network
由于
答案 0 :(得分:7)
简短版本:遥控器上名为pr/34
的分支将成为您的origin/pr/34
。但是遥控器上名为refs/pull/34/head
的引用也变成了您的origin/pr/34
。但他们不能同时成为那样,所以git抱怨并退出。无论是什么设置分支映射都不能很好地在github上设置pull-request分支(但我对这两个软件没有任何了解)。
可能(我不知道)删除 问题来源的更长解释如下。鉴于此: 作为 这里的每个输出行都是一个“refspec”,它由三部分组成: (最后一行是多余的,因此无害,它只会使匹配发生两次。) 所以,让我们看一下上面对ref-names 对于 现在让我们解决 请注意 要使错误消失,您必须完全丢弃不需要的“额外”匹配,或更改重写规则,以便两个不同的远程 我不知道你想要什么结果,所以我不能说如何重写它们。 (而且,我不知道创建这些内容的原因是什么 - 普通+refs/pull/*/head:refs/remotes/origin/pr/*
fetch
配置行是否合理。或者,您可以将这些映射到其他一些本地引用名称空间,例如refs/pullreqs/origin/*
(但是这样的引用名称有点不方便输入)。如果每个pull请求都要在github上创建 {/ 1>} refs/heads/pr/number
和 refs/pull/number/head
,我会继续删除一个配置行。< / p>
+refs/pull/*/head:refs/remotes/origin/pr/*
+refs/heads/*:refs/remotes/origin/*
+refs/heads/*:refs/remotes/origin/*
git config --get-all remote.origin.fetch
的输出,我可以解释出现了什么问题。 “如何修复它”取决于你想要的结果。+
,:
左侧的名称,以及{{1}右侧的名称}}。两个名称中都允许一个:
,它在文件名中与*
匹配类似(但不完全一样),例如*
,*.c
等。 ,使用第二个*.py
,然后使用匹配的第一个*
。无论如何,它应该在下面显而易见。*
和refs/pull/34/head
的意义,这两个名字都存在于名为refs/heads/pr/34
的远程中(在github上)。origin
:这只匹配第一个refspec。 refs/pull/34/head
部分与*
匹配。 refspec的右侧表示要将其重写为34
,结果是:refs/remotes/origin/pr/*
refs/remotes/origin/pr/34
。这与第一个refspec不匹配,但它与第二个匹配。 refs/heads/pr/34
部分与*
匹配。 refspec的右侧表示将其重写为pr/34
,结果是:refs/remotes/origin/*
refs/remotes/origin/pr/34
上的两个不同名称是如何映射到本地存储库中的相同 final 名称的。 Git不知道是否将您的本地origin
设置为等于第一个,或第二个,如refs/remotes/origin/pr/34
所示。origin
成为两个不同的本地refs/whatever
秒。这意味着您需要更改git配置文件中的refs/remotes/origin/whatever
行。fetch =
只创建了一个git clone
条目。其他内容添加了冗余条目,而+refs/heads/*:refs/remotes/origin/*
添加了一个refs/pull/*/head
。这就是那些破坏了东西的东西。那么,加上在github上创建refs/heads/pr/34
的事实。)
答案 1 :(得分:2)
当我在本地拉PR,改变PR,然后推到遥控器时,我遇到了类似的问题。当试图获取未来的PR时,我得到了类似的错误。要修复我删除了新的本地分支(合并后),然后删除远程分支(在我的情况下是GitHub)。