繁体   English   中英

git 分支和 git checkout -b 有什么区别?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM