在git中检出远程分支时遇到问题
我目前在使用git fetch时遇到问题在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签出分支名称
以签出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
(因为这样的更新不是快进)。这几乎不应该发生,如果真的发生了,那就意味着有人被推到了原点;但总的来说,如果有人强制推到原点,您可能应该选择新的值 要实现这一点,refspec(这对名称之间带有冒号)应该以前导加号开头origin/master
+
- 查看他们的
分支:如果您没有,或者它在后面,请执行相应的创建或快进。如前所述,如果您的远程跟踪名称在其他方面不一致(位于分支的前面或前后),请拒绝更新它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/*'