[英]Git command: what is the difference between git checkout -b <branch> <remote branch> and git branch <branch> <remote branch>?
[英]What is the difference between git branch and git checkout -b?
我对 git/gitlab 很陌生,想确认第一个屏幕截图中两个命令之间的区别。 拥有两个创建新分支的命令的目的是什么。 为什么甚至需要'git branch'?
如果我想创建一个新分支但不切换到该分支,它是否纯粹存在? 所以我节省了很少的时间,而不是执行“git checkout -b new_branch”然后“git checkout previous_branch”。
另外为什么说要引用当前的 HEAD? 我认为这与第二个屏幕截图中的“remotes/origin/HEAD -> origin/master”有关?
我尝试了“git branch test_branch_name”,它创建了新分支而不需要引用当前的 HEAD,那么为什么它提到引用当前的 HEAD?
可能没有必要,但这里是第一个屏幕截图来源的链接: https://about.gitlab.com/images/press/git-cheat-sheet.Z437175BA4191210EE004E1D9347
要填写更多详细信息:
...为什么甚至需要'git branch'?
git branch
命令有很多选项,例如:
git branch --set-upstream-to
或者:
git branch --list
或者:
git branch -d
git checkout
和新的(Git 2.23 或更高版本) git switch
都不会做的事情。
git branch --list
所做的事情可以用git for-each-ref
来完成。 git branch --set-upstream-to
所做的事情可以通过git config
来完成。 如果您想打个比方,Git 命令就是工具。 您可以使用带锯、钢锯、平顶锯、钻头或凿子切割木材。 如果您想制作燕尾榫,这些工具中的大多数都可以完成这项工作,但使用路由器和燕尾夹具,它会更快、更好、更轻松。 如果您的目标是安装锁和门把手,请考虑使用孔锯和钻头。
(在我看来, git checkout
命令实际上内置了太多工具。显然,最后,官方的 Git 维护人员也提出了同样的观点,因为 ZBA9F11ECC 执行的两个主要工作现在可以提供git checkout
by two separate front-end commands: git switch
and git restore
. Of course, in typical Git fashion, git restore
can now do a few things that git checkout
can't.)
Git 在某些方面主要是一个图形处理工具套件,碰巧会拖拽源代码。 您操作的图是提交图,它由提交的节点(图顶点)组成,通过单向边链接(弧)连接,这些边链接是存储在每个提交节点中的父 hash ID。 请参阅像 (a) Git 一样思考。
git checkout -b [name]
是git branch [name] && git checkout [name]
的缩写。 最新版本的 Git 还支持git switch
以检查分支。
git branch [name]
等价于git branch [name] HEAD
。 git branch [name]
是git branch [name] [start-point]
的特例。 省略start-point
时,默认为HEAD
。
更多详细信息,请参见git 分支。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.