git拒绝获取当前分支

我设置了一个远程存储库,可以将新的更改推送到该存储库,但是我无法从中获取,我总是收到(而不是神秘的)错误消息:

fatal: Refusing to fetch into current branch refs/heads/master of non-bare repository
fatal: The remote end hung up unexpectedly

这是什么意思? 我应该怎么做才能启用提取功能?

(请注意,此远程存储库仅用作备份存储库,因此它几乎应该是我的本地存储库的精确副本。我真的不明白为什么我可以推送到该存储库但不能从中获取...)

我的配置看起来像:

[remote "origin"]
    url = ssh://blablablah
    fetch = +refs/*:refs/*
    mirror = true
Olivier Verdier asked 2019-11-12T12:53:33Z
7个解决方案
51 votes

如果有人因为特别想获取当前分支而发现此消息,则可以使用--update-head-ok标志。 从文档:

-u
--update-head-ok
默认情况下,git fetch拒绝更新与当前分支相对应的head。 该标志禁用检查。 这纯粹是供git pull内部使用,以便与git fetch进行通信,除非您实现自己的Porcelain,否则不应该使用它。

在某些情况下,我们确实希望实现自己的瓷器命令,例如自动化和工具。

RobW answered 2019-11-12T12:55:10Z
32 votes

您想要做的就是获取您正在使用的分支。 也就是说,您在master分支上,然后尝试对其进行更新。 那不可能 更新remotes/otherrepo/*分支,然后将其拉入本地分支更为常见。 您想要的可能是

git remote add otherrepo thehost:/the/path.git

这将设置存储库以提取到remotes/otherrepo/*git fetch otherrepo应该可以解决问题。 Alternativeley,您可以手动编辑.git/config并将fetch的遥控器设置为refs/heads/*:refs/remotes/otherrepo/*

Michael Krelin - hacker answered 2019-11-12T12:54:12Z
5 votes

如果您在master分支中并且想要获得最新的尝试,这也应该工作

git pull起源大师

Sai answered 2019-11-12T12:55:49Z
1 votes

当我不经意地克隆存储库而不是获取它时,就遇到了这个问题,因此两个存储库都是主存储库。 如果您没有对远程存储库进行任何工作,则可以使用以下基本git命令修复问题:(1)删除远程存储库,(2)将本地存储库复制到远程存储库所在的位置,(3)删除远程存储库 本地存储库,然后(4)使用

git init; git fetch $REMOTE_GIT_REPOSITORY_URL  

然后git pullgit push将做正确的事情。 按照Michael更有效,更原则的回答,避免使用git remote的好处是,您无需考虑跟踪分支的语义。

Charles Stewart answered 2019-11-12T12:56:23Z
0 votes

我也有同样的问题。 首先,我尝试使用此

git fetch [remote_name] [branch_name] 

我有你提到的同样的问题。 之后,我尝试了这个简单的命令。

git pull [remote_name] [branch_name]

注意将获取并合并更改。 如果使用终端,则文件打开,要求提交消息。 通过此消息,您将推送最新的提交。 尝试使用此命令,最后您将能够推送请求。

git push [remote_name] [branch_name_local] 
Hafiz Shehbaz Ali answered 2019-11-12T12:57:08Z
0 votes

您实际上是在命令行中键入Git命令,还是从自己的代码运行Git可执行文件?
如果您是通过代码运行的,那么您确定Git试图获取正确的本地目录吗?

有两种方法可以做到这一点:

  1. 在执行Git之前,使用编程语言提供的选项设置正确的工作目录。
    (C#示例,因为这就是我正在使用的)

  2. 始终将-C parameter参数传递给Git,以使用本地存储库指定目录。


我有一个项目,正在从C#代码中调用Git可执行文件,并且当我不小心忘记设置-C parameter时,也收到了与该问题相同的错误消息。

Christian Specht answered 2019-11-12T12:58:28Z
-1 votes

致命的:拒绝获取非裸存储库的当前分支引用/ heads / BRANCHNAME

我在本地创建了一个分支BRANCHNAME,然后执行了命令“ git fetch up pull / ID / head:BRANCHNAME”并致命:拒绝获取非裸存储库的当前分支refs / heads / BRANCHNAME

然后我删除了该分支,并再次调用相同的cmd,效果很好。

其实我正在检查拉请求分支。

Adit choudhary answered 2019-11-12T12:59:23Z
translate from https://stackoverflow.com:/questions/2236743/git-refusing-to-fetch-into-current-branch