什么是`git checkout -b branch`和`git checkout -b branch origin / branch`之间的区别

时间:2017-12-14 06:48:33

标签: git

我们知道,我创建了一个可以使用的本地branch分支:

git checkout -b branch 

但是有一个git checkout -b branch origin/branch

我不知道他们之间有什么区别,谁可以告诉我这件事? 此命令是否会创建远程origin/branch

修改

我有三个问题:

1. git checkout -b branch origin/branch是否在本地回购中创建分支?

2. git checkout -b branch origin/branch是否为远程仓库创建了原始分支?

3.或者git checkout -b branch origin/branch是从本地repo主分支创建分支,git checkout -b branch是否从当前分支创建分支?

2 个答案:

答案 0 :(得分:3)

  

1. git checkout -b branch origin / branch是否在本地仓库中创建分支?

  

2.git checkout -b branch origin / branch是否为远程仓库创建了原始分支?

不,它会创建一个与origin / branch(最后一次拉动的状态)相同的本地分支

  

3.Or是git checkout -b分支origin / branch是从本地repo master分支创建分支,git checkout -b分支创建一个   当前分支的分支?

区别在于“新分支中的内容”。 origin / branch是指远程repo的本地引用(不能修改!),branch是本地分支。

查看git book

中的非常好的解释

答案 1 :(得分:2)

作为per the manual

  

<强> git checkout -b|-B <new_branch> [<start point>]

     

指定-b会导致创建新分支,就像调用git-branch然后签出一样。 [...]

因此,调用git checkout -b new_branchgit checkout -b new_branch start_point等同于以下内容:

git branch new_branch
git checkout new_branch

# or

git branch new_branch <start_point>
git checkout foo

因此,让我们检查git-branch该起点会发生什么:

  

命令的第二个表单创建一个名为<branchname>的新分支头,指向当前HEAD<start-point>(如果给定)。

未指定起点意味着起点为HEAD,因此git branch new_branch相当于git branch new_branch HEAD

那么git branch new_branch start_point做了什么?创建一个指向new_branch指定的提交的新分支start_point。如果您没有指定一个,那么这将是HEAD,这是当前签出的提交。

总结一下:git checkout -b branch将创建并检出与您当前所在位置完全相同的新分支branchgit checkout -b branch origin/branch将创建并签出指向branch的新分支origin/branch,该分支是branch远程上远程分支origin的本地副本。 / p>