【问题标题】:What is the difference between git branch and git checkout -b?git branch 和 git checkout -b 有什么区别?
【发布时间】:2020-03-05 17:45:21
【问题描述】:

我是 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.pdf

【问题讨论】:

  • 标题与您的问题内容有什么关系?为什么这被标记为 r 和 rstudio?

标签: git gitlab


【解决方案1】:

要填写更多详细信息:

... 为什么还需要 '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 维护人员也得出了同样的观点,因为其中两个git checkout 可以执行的主要工作现在由两个单独的前端命令提供:git switchgit restore。当然,在典型的 Git 方式中,git restore 现在可以做一些git checkout 可以做的事情't。)

在某些方面,Git 主要是一套图形处理工具,碰巧将源代码拖到一起。您操作的图是提交图,它由提交的节点(图顶点)组成,通过单向边链接(弧)连接,这些边链接是存储在每个提交中的父哈希 ID -节点。见Think Like (a) Git

【讨论】:

    【解决方案2】:

    git checkout -b [name]git branch [name] && git checkout [name] 的缩写。最新版本的 Git 还支持git switch 签出分支。

    git branch [name] 等价于git branch [name] HEADgit branch [name]git branch [name] [start-point] 的一个特例。省略start-point时,默认为HEAD

    更多详情请见git branch

    【讨论】:

      猜你喜欢
      • 2011-12-20
      • 2012-04-17
      • 2018-08-31
      • 2022-12-16
      • 1970-01-01
      • 2018-11-23
      • 2011-04-08
      • 1970-01-01
      相关资源
      最近更新 更多