git 1.8的另一个问题:
$ git push
error: dst ref refs/heads/master receives from more than one src.
error: failed to push some refs to 'gitosis@xxx.xx:xxx.git'
Run Code Online (Sandbox Code Playgroud)
建议?它在升级到1.8之前正在工作.
$ git remote -v
origin gitosis@xxx.xx:xxx.git (fetch)
origin gitosis@xxx.xx:xxx.git (push)
Run Code Online (Sandbox Code Playgroud)
谷歌搜索后我首先尝试了这个:
$ git push origin :refs/heads/refs/heads/master
remote: warning: Allowing deletion of corrupt ref.
To gitosis@xxx.xx:xxx.git
- [deleted] refs/heads/master
Run Code Online (Sandbox Code Playgroud)
不知道那是什么,为什么它是腐败的.
$ git pull
Already up-to-date.
$ git push
error: dst ref refs/heads/master receives from more than one src.
error: failed to push some refs to 'gitosis@xxx.xx:xxx.git'
Run Code Online (Sandbox Code Playgroud)
仍然没有工作,但origin master
至少工作:
$ git push origin master
Counting objects: 42, done.
To gitosis@xxx.xx:xxx.git
3e3fc87..6e11d2a master -> master
Run Code Online (Sandbox Code Playgroud)
好的,这种方法可以解决,但问题的原因是什么?为什么origin/master突然被破坏了?我做了git push origin :refs/heads/refs/heads/master
什么?
.git/config
:
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = false
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = gitosis@xxx.xx:xx.git
push = HEAD
[branch "master"]
remote = origin
merge = refs/heads/master
ls .git/refs/remotes/origin:
HEAD master refs
Run Code Online (Sandbox Code Playgroud)
最后,现在我git push origin master
每次都要做.而最令人讨厌的是一些回购工作git push
,但在大多数情况下,我必须添加,origin master
但我不明白为什么,并且它不能是我独自解决这个问题.
jcw*_*jcw 18
获得此错误的另一种方法是,如果您不小心输入要尝试推送两次的分支的名称,即:
git push master otherBranch master moreBranches
Run Code Online (Sandbox Code Playgroud)
产生此错误.一旦你意识到你已经完成修复就很明显了:
git push master otherBranch moreBranches
Run Code Online (Sandbox Code Playgroud)
小智 5
就我而言,我的分支名称中有一个空格:
git push origin 353-applyPermissions :353-applyPermissions
Run Code Online (Sandbox Code Playgroud)
返回 > 错误:dst ref refs/heads/353-applyPermissions 从多个 src 接收。但这有效:
git push origin 353-applyPermissions:353-applyPermissions
Run Code Online (Sandbox Code Playgroud)
遵循这个 git 旧补丁(2007!)中的解释
一些参考文献会过时,例如,当分叉者重新设置基础并丢失分叉所需的一些对象时。
处理这些引用的快速而肮脏的方法是删除它们并再次推送它们。但是,
git-push
首先会获取 ref 的当前提交名称,由于 ref 没有指向有效对象,因此会收到 null sha1,然后告诉receive-pack
它应该删除具有此提交名称的 ref。
delete_ref()
随后将被调用,并检查resolve_ref()
(不检查对象的有效性)返回相同的提交名称。这会失败。
refs/heads/refs/heads/master
看起来像是一个错误地命名为“refs/heads/master”的分支(使用命名空间来定义分层分支名称),并且指向任何内容。
删除它是正确的举动。