我是git的新手,我坚持使用git fetch(我对TFS和SVN有更多的经验,所以欢迎任何类比:)
所以我在Github上找到了一个我分叉的项目:
我做了一些签到,也做了一个git pull来从源获取最新的更改,在某些时候,我想我点击同步按钮(我正在使用AndroidStudio BTW),我从这里迷路了.
它产生了我不太了解的提交,从这里开始,我似乎无法再从源获取最新的添加内容(黑色源上的最后4个更改)
我在git fetch上收到以下错误:
致命:refs/remotes/origin/pr/34跟踪refs/pull/34/head和refs/heads/pr/34
https://github.com/MohammadAG/Xposed-Tinted-Status-Bar/network

谢谢
简短版本:在pr/34遥控器上命名的分支,成为您的origin/pr/34.但是在refs/pull/34/head遥控器上命名的参考,也成了你的origin/pr/34.但他们不能同时成为那样,所以git抱怨并退出.无论是什么设置分支映射都不能很好地在github上设置pull-request分支(但我对这两个软件一无所知).
它可以(我不知道)是合理的删除+refs/pull/*/head:refs/remotes/origin/pr/* fetch配置行.或者,您可以将这些映射到其他一些本地引用名称空间,例如refs/pullreqs/origin/*(但这样的引用名称有点不方便输入).如果每一个拉请求将创建两个 与在github上,我会继续前进,取出一个配置行.refs/heads/pr/number refs/pull/number/head
下面是对问题根源的更长解释.鉴于这种:
Run Code Online (Sandbox Code Playgroud)+refs/pull/*/head:refs/remotes/origin/pr/* +refs/heads/*:refs/remotes/origin/* +refs/heads/*:refs/remotes/origin/*
作为输出git config --get-all remote.origin.fetch,我可以解释出了什么问题."如何修复它"取决于您想要的结果.
这里的每个输出行都是一个"refspec",它由三部分组成:+a,左边的:名字和右边的名字:.一个*被允许在这两个名字,它的工作原理有点(但不完全),如*在文件名,如匹配,*.c,*.py,等,与第二*再使用任何的第一个*匹配.无论如何,它应该在下面显而易见.
(最后一行是多余的,因此无害,它只会使匹配发生两次.)
那么,让我们看看上面对ref-names的意义,refs/pull/34/head并且refs/heads/pr/34这两个都存在于远程命名origin(在github上).
对于refs/pull/34/head:这只匹配第一个refspec.该*部分匹配34.refspec的右侧表示要重写这个以读取refs/remotes/origin/pr/*,因此结果是:
refs/remotes/origin/pr/34
Run Code Online (Sandbox Code Playgroud)
现在让我们来解决refs/heads/pr/34.这与第一个refspec不匹配,但它与第二个匹配.该*部分匹配pr/34.refspec的右侧表示将其重写为refs/remotes/origin/*,因此结果是:
refs/remotes/origin/pr/34
Run Code Online (Sandbox Code Playgroud)
请注意两个不同的名称如何origin映射到本地存储库中的相同最终名称.Git不知道是否将本地设置为refs/remotes/origin/pr/34等于第一个或第二个,如上所示origin.
要使错误消失,您必须完全丢弃不需要的"额外"匹配,或者更改重写规则,以便两个不同的远程s成为两个不同的本地s.这意味着您需要更改git配置文件中的行.refs/whateverrefs/remotes/origin/whateverfetch =
我不知道你想要什么结果,所以我不能说如何重写它们.(并且,我不知道是什么创造了这些 - 一个正常git clone只创建一个+refs/heads/*:refs/remotes/origin/*条目.其他东西添加了冗余条目,而另一个用于refs/pull/*/head.这就是那些东西 - 其他东西破坏了东西.嗯,那,加上refs/heads/pr/34在github上创建的东西.)
| 归档时间: |
|
| 查看次数: |
1690 次 |
| 最近记录: |