git checkout <branch_name> 和 git checkout -b <branch_name> 有区别吗
Is there any difference between git checkout <branch_name> and git checkout -b <branch_name>
我是 git 的新手,所以我要第一次提交,为此我通过键入 git checkout my_branch
创建了一个分支。这工作得很好。但是当我在文档中看到它被使用后 git checkout -b my_branch
它们之间有什么区别吗?
当您 运行 使用 -b 时,您是在告诉 git 为您创建分支。 git 不带 -b 的结帐要求分支已经存在才能工作。
是:
$ git checkout asdfadsf
error: pathspec 'asdfasdf' did not match any file(s) known to git
这失败了,因为我没有有一个分支asdfasdf
。 Git 试图将 asdfasdf
视为文件名,而我 也没有 一个名为 asdfasdf
的文件。
$ git checkout -b asdfasdf
Switched to a new branch 'asdfasdf'
这成功并创建了一个新分支。
另一方面,我没有一个名为maint
的分支,但是:
$ git checkout maint
Branch 'maint' set up to track remote branch 'maint' from 'origin'.
Switched to a new branch 'maint'
这也创建了一个 新 分支,maint
。但请注意它看起来有何不同。它仍然说 Switched to a new branch
,但是 first 它说 Branch 'maint' set up to track remote branch 'maint' from 'origin'.
这背后的原因有点复杂,但归结为:
- 没有
-b
,如果你要求一个你没有的分支,Git会尝试一些替代方法。其中一些可能有效!当它按照 maint
此处的方式工作时,新分支已经设置了 upstream。
- With
-b
, Git 只会创建 分支,不问任何问题(前提是创建一个新的分支是可能的)。新分支不会与上游建立。如果您已经有分支,则会出现错误。
如果您想要 一个带有上游集合的分支——例如,如果有一个 origin/feature/x123
并且您希望创建自己的 feature/x123
来匹配——您不 想要-b
选项,因为那样不会搜索上游origin/feature/x123
。如果你不想要一个上游集,你想要想要-b
选项。
(是否以及何时需要为您设置上游是一个单独的问题。在 Whosebug 中搜索现有答案。)
我是 git 的新手,所以我要第一次提交,为此我通过键入 git checkout my_branch
创建了一个分支。这工作得很好。但是当我在文档中看到它被使用后 git checkout -b my_branch
它们之间有什么区别吗?
当您 运行 使用 -b 时,您是在告诉 git 为您创建分支。 git 不带 -b 的结帐要求分支已经存在才能工作。
是:
$ git checkout asdfadsf
error: pathspec 'asdfasdf' did not match any file(s) known to git
这失败了,因为我没有有一个分支asdfasdf
。 Git 试图将 asdfasdf
视为文件名,而我 也没有 一个名为 asdfasdf
的文件。
$ git checkout -b asdfasdf
Switched to a new branch 'asdfasdf'
这成功并创建了一个新分支。
另一方面,我没有一个名为maint
的分支,但是:
$ git checkout maint
Branch 'maint' set up to track remote branch 'maint' from 'origin'.
Switched to a new branch 'maint'
这也创建了一个 新 分支,maint
。但请注意它看起来有何不同。它仍然说 Switched to a new branch
,但是 first 它说 Branch 'maint' set up to track remote branch 'maint' from 'origin'.
这背后的原因有点复杂,但归结为:
- 没有
-b
,如果你要求一个你没有的分支,Git会尝试一些替代方法。其中一些可能有效!当它按照maint
此处的方式工作时,新分支已经设置了 upstream。 - With
-b
, Git 只会创建 分支,不问任何问题(前提是创建一个新的分支是可能的)。新分支不会与上游建立。如果您已经有分支,则会出现错误。
如果您想要 一个带有上游集合的分支——例如,如果有一个 origin/feature/x123
并且您希望创建自己的 feature/x123
来匹配——您不 想要-b
选项,因为那样不会搜索上游origin/feature/x123
。如果你不想要一个上游集,你想要想要-b
选项。
(是否以及何时需要为您设置上游是一个单独的问题。在 Whosebug 中搜索现有答案。)