Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.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 branch remotes/origin/foo'是否创建新分支?_Git - Fatal编程技术网

'git branch remotes/origin/foo'是否创建新分支?

'git branch remotes/origin/foo'是否创建新分支?,git,Git,我在master branch下运行git branch-ra,它显示了一个分支 remotes/origin/deals 该分支未显示在git branch的输出中。 我猜这是一个远程跟踪分支,对吗 我想转到那个分支,但我不小心跑了 $ git branch remotes/origin/deals $ git branch * master remotes/origin/deals 我应该运行git branch-b remotes/origin/deals,对吗 我是否创建了一个新

我在master branch下运行
git branch-ra
,它显示了一个分支

remotes/origin/deals
该分支未显示在git branch的输出中。 我猜这是一个远程跟踪分支,对吗

我想转到那个分支,但我不小心跑了

$ git branch remotes/origin/deals
$ git branch
* master
  remotes/origin/deals
我应该运行
git branch-b remotes/origin/deals
,对吗

我是否创建了一个新的分支机构,其名称也是
remotes/origin/deals
,现在是否有两个分支机构的名称都是
remotes/origin/deals
,这是怎么可能的

如果我创建了一个新分支
remotes/origin/deals
,它是本地分支吗?我怎样才能删除它

谢谢。

当你跑步时

$ git branch remotes/origin/deals
…您创建了一个新文件:

# file describing local branch created by the above command
.git/logs/refs/heads/remotes/origin/deals
…实际上,您可能应该删除这些内容(手动或使用
git branch-d remotes/origin/deals

这与指向远程分支头的文件相反:

# file created by fetching from the remote branch
.git/logs/refs/remotes/origin/deals

要签出远程分支,应使用:

$ git checkout remotes/origin/deals
…或者,要创建并签出跟踪该远程分支的本地分支,请执行以下操作:

$ git checkout -b deals --track origin/deals
当你跑的时候

$ git branch remotes/origin/deals
…您创建了一个新文件:

# file describing local branch created by the above command
.git/logs/refs/heads/remotes/origin/deals
…实际上,您可能应该删除这些内容(手动或使用
git branch-d remotes/origin/deals

这与指向远程分支头的文件相反:

# file created by fetching from the remote branch
.git/logs/refs/remotes/origin/deals

要签出远程分支,应使用:

$ git checkout remotes/origin/deals
…或者,要创建并签出跟踪该远程分支的本地分支,请执行以下操作:

$ git checkout -b deals --track origin/deals

git branch remotes/origin/deals
创建一个名为remotes/origin/deals的新分支

git签出-b远程/原始/交易
创建名为remotes/origin/deals的新分支,并指向该分支

git签出遥控器/origin/deals
指向名为remotes/origin/deals的现有分支

git分行-d远程/原产地/交易
安全地删除分支,确保没有未提交的工作

git分行-D远程/原产地/交易
强制删除分支

git推送源--删除{the_remote_branch}

删除远程分支

git branch remotes/origin/deals
创建名为remotes/origin/deals的新分支

git签出-b远程/原始/交易
创建名为remotes/origin/deals的新分支,并指向该分支

git签出遥控器/origin/deals
指向名为remotes/origin/deals的现有分支

git分行-d远程/原产地/交易
安全地删除分支,确保没有未提交的工作

git分行-D远程/原产地/交易
强制删除分支

git推送源--删除{the_remote_branch}

如果要打开所需的远程分支,请删除远程分支

: 吉特结帐部给我

现在,您已经创建了一个与远程分支同名的分支。 一个简单的解决方案是将项目克隆到其他本地文件夹上。在此之后,您可以运行:
git签出远程/原始/交易

如果要打开远程分支,需要: 吉特结帐部给我

现在,您已经创建了一个与远程分支同名的分支。 一个简单的解决方案是将项目克隆到其他本地文件夹上。在此之后,您可以运行:
git签出远程/原始/交易

到目前为止,您得到的答案都是正确的,但没有指出关键区别。正如您在另一个问题中看到的,Git声明有两种“类型”的分支,常规(本地)分支和远程跟踪分支

然而,在幕后,Git实际上也通过将它们集中在引用的一般类别下来统一这些和标记。所以这就引出了一个好问题:Git如何决定B是本地分支,R是远程跟踪分支

显而易见的答案其实是错误的答案

git branch
命令在不使用标志或使用
-l
运行时,显示本地分支:

$ git branch
master
test
$ git branch -r
origin/master
origin/test
或者,当使用
-r
运行时,它会显示远程跟踪分支:

$ git branch
master
test
$ git branch -r
origin/master
origin/test
你可能会对自己说:啊哈,
origin
的意思是“远程跟踪”。但事实并非如此,事实上,当您运行
git branch-a
查看本地和远程跟踪分支时,输出会发生变化:

$ git branch -a
master
test
remotes/origin/master
remotes/origin/test
现在有点神秘了。也许
remotes/origin
意味着远程跟踪?好吧,更接近了,但仍然不对

Git如何区分本地和远程跟踪分支 事实上,
git-branch
在骗你,有一个很好的借口:它试图缩短时间。每个引用的全名以
refs/
开头。如果
git branch
没有进行这种缩短,您将看到:

refs/heads/master
refs/heads/test
refs/remotes/origin/master
refs/remotes/origin/test
现在显而易见的答案是正确的:本地分支以
refs/heads/
开头,远程跟踪分支以
refs/remotes/
开头。(为了完整起见,我们还要注意标记以
refs/tags/
开头)
git branch
命令将其缩短,因为您需要本地分支或远程跟踪分支,所以您知道要查找哪种分支

分支创建也是如此
git branch
命令将相同的规则应用于分支创建。如果您使用
-l
或根本不使用任何标志,它将创建一个常规(本地)分支:它将
refs/heads/
放在您键入的任何内容的前面。如果使用
-r
,它将创建一个远程跟踪分支:它将
refs/remotes/
放在前面。然后,像往常一样,当它向你展示它们时,它会再次将它们剥离

这意味着
git branch remotes/origin/deals
创建
refs/heads/remotes/origin/deals
:本地分支,而不是远程跟踪分支。然后显示为
remot