Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在git中检出远程分支时遇到问题_Git_Version Control - Fatal编程技术网

在git中检出远程分支时遇到问题

在git中检出远程分支时遇到问题,git,version-control,Git,Version Control,我目前在使用git fetch时遇到问题git签出分支名称以签出git中的远程分支。我得到错误致命:“origin/makeathon branch”不是提交,无法从中创建分支“makeathon branch”。当我运行gitlsremote--heads origin时,我在列表中看到了远程分支,但随后我尝试签出该分支并获得错误。显示的唯一远程分支是origin/master和origin/HEAD。有什么建议吗?根据评论,输出: git config --get-all remote.or

我目前在使用git fetch时遇到问题
git签出分支名称
以签出git中的远程分支。我得到错误
致命:“origin/makeathon branch”不是提交,无法从中创建分支“makeathon branch”
。当我运行
gitlsremote--heads origin
时,我在列表中看到了远程分支,但随后我尝试签出该分支并获得错误。显示的唯一远程分支是
origin/master
origin/HEAD
。有什么建议吗?

根据评论,输出:

git config --get-all remote.origin.fetch
是:

(不带前导加号)

这告诉您Git,当您运行
Git fetch origin
时,它应该:

  • 查看他们(源站)的
    master
    分支:如果您没有
    origin/master
    远程跟踪名称,请创建它;或者,如果您的
    origin/master
    严格位于其
    master
    分支的后面,请快进
    origin/master
    以匹配其
    master

    如果您的
    origin/master
    在任何其他方面与他们的
    origin/master
    不一致,请拒绝更新您的
    origin/master
    (因为这样的更新不是快进)。这几乎不应该发生,如果真的发生了,那就意味着有人被推到了原点;但总的来说,如果有人强制推到原点,您可能应该选择新的值

    要实现这一点,refspec(这对名称之间带有冒号)应该以前导加号开头
    +

  • 查看他们的
    graphql
    分支:如果您没有,或者它在后面,请执行相应的创建或快进。如前所述,如果您的远程跟踪名称在其他方面不一致(位于分支的前面或前后),请拒绝更新它

  • 丢弃所有其他分支信息:您不关心任何其他分支

显然,最后一点是错误的,因为您现在确实关心他们的另一个分支,即他们的
makeathon分支

通过将其更改为标准设置,您可以在一个步骤1中更改所有这些:

git remote --set-branches origin '*'
(这要求您的Git版本至少为1.7.2),或者:

(引号用于保护shell中的
*
字符,某些Windows shell不需要引号,只有sh/bash有时才需要引号)。这一标准的制定意味着:

  • 看看origin的所有分支。对于每一个,强制创建或重新设置相应的远程跟踪名称,使其与他们的名称匹配
如果名称是新的,则会创建名称;如果名称存在且落后,则会快进名称;如果名称存在且与他们的名称不一致,则会重新设置名称

或者,如果您希望只保留到目前为止的三个远程跟踪名称,则可以添加
refs/heads/makeathon branch:refs/remotes/origin/makeathon branch
,如果您希望获取所有更新,则可以添加带前导加号的加号;如果您只希望获取新创建并快速前进,则可以不添加加号

还有其他调整配置的方法,包括我个人最喜欢的使用
git config--edit
来调用配置文件上的常用编辑器(但请确保您使用的任何编辑器都将文件保存为纯文本)



1A of.

git fetch--all
是否更改了任何内容?不幸的是no@Jonathan.brink运行
git rev parse origin/makeathon branch
git cat file-t origin/makeathon branch
会得到什么?第一个应该是散列ID,第二个应该是单词
commit
;如果其中一个失败或不正确,这就解释了为什么
git checkout
失败,我们可能正在查看您的
remote.origin.fetch
设置。@torek I get
致命:模棱两可的参数“origin/makeathon branch”:未知修订或路径不在工作树中。
好,所以,git config--get all remote.origin.fetch显示了什么?它(通常)应该是
+refs/heads/*:refs/remotes/origin/*
,但如果您最初使用
--单分支
进行克隆,则不会是,您必须将其重新设置为该值。
git remote --set-branches origin '*'
git config --replace-all remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'