【问题标题】:What is the difference between "git branch" and "git checkout -b"?“git branch”和“git checkout -b”有什么区别?
【发布时间】:2011-12-20 17:20:12
【问题描述】:

我使用git checkout -b 创建了一个新分支。我认为git branch 做同样的事情。 如果这两个命令完全不同,它们有何不同?

【问题讨论】:

标签: git git-branch git-checkout


【解决方案1】:

git checkout -b BRANCH_NAME 创建一个新分支并签出新分支,而git branch BRANCH_NAME 创建一个新分支但将您留在同一个分支上。

换句话说,git checkout -b BRANCH_NAME 为您执行以下操作。

git branch BRANCH_NAME    # create a new branch
git switch BRANCH_NAME    # then switch to the new branch

【讨论】:

  • 在没有 -b 开关的情况下不会使用 git checkout,只是从远程签出分支,这样我们就有了它的本地副本吗?
  • @quantum231 正确。 -b 切换到刚刚创建的新分支副本。
【解决方案2】:

git branch 创建分支,但您仍保留在已签出的当前分支中。

git checkout -b 创建一个分支并检查它。

它可以被认为是以下形式的缩写:

git branch name
git checkout name

【讨论】:

  • 不如说:“git 分支创建了分支,但您仍留在当前分支中,您已签出。”
【解决方案3】:
  • git branch: 显示你所有的分支
  • git branch newbranch: 创建一个新分支
  • git checkout -b newbranch: 创建一个新分支并立即切换到该分支。这与git branch newbranch 后跟git checkout newbranch 相同。

【讨论】:

    【解决方案4】:

    完整语法:

    git checkout -b [NEW_BRANCH] [FROM_BRANCH]
    

    [FROM_BRANCH] 是可选的。如果没有 FROM_BRANCH,git 将使用当前分支。

    【讨论】:

      【解决方案5】:

      还有一个flag要提,是相对于这些的..

      git checkout -B BRANCH_NAME
      

      这是我最近一直在使用的一个非常有用的命令。此命令检出您指定的分支,并重置基于源分支的分支。

      【讨论】:

      • 你能解释更多吗?我不知道重置对 git 意味着什么
      • 来自 git 手册:If -B is given, <new_branch> is created if it doesn't exist; otherwise, it is reset. This is the transactional equivalent of $ git branch -f <branch> [<start point>] $ git checkout <branch>
      • 所以你的意思是你可以重用现有的分支?
      • 如果您切换到的分支被其他人共享,checkout -B 是否危险?我最近使用了它,它似乎自动将我另一个分支中的更改合并到我切换到的分支中。
      • 如果分支已经存在,checkout -B 不会just 切换,它还会将目标分支重置为前一个分支的提交(或指定的提交)。这也可能很危险,因为在较新的分支上重新运行 checkout -B 可能会将分支提交重置回前一个分支,如果前一个分支落后,这将删除最近的提交。
      【解决方案6】:

      这两个命令的形式是相似的(查看 git-scm docs Version 2.11.1):

      git branch <branchname> <start-point>
      

      和

      git checkout -b <new_branch> <start_point>
      

      latter先执行分支命令,然后添加结帐。以这种形式明确引用 git-branch 的文档:

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

      【讨论】:

      • 这不会在 2011 年接受的答案上添加任何新信息。
      • 它实际上确实添加了关于 的新信息。我个人发现这对于在其他位置的对象上创建分支非常有用,而无需先签出对象或移动当前分支。在我看来,实际上是指 git-reference 时使用符号作为 [FROM_BRANCH] 没有用。
      • 可选的第二个参数与问题无关。两个命令之间是相同的,并且 OP 要求有所不同。 (如果您真的认为这很重要,我会在已接受的答案中添加评论。)
      【解决方案7】:

      基本上:

      A-git 分支可以让你创建一个简单明了的分支。

      B -git checkout -b 允许你创建一个分支并同时切换到它。

      你什么时候用 which ? 1- git 分支,当您想创建一个分支但留在当前分支上时。 2- git checkout -b 当你想创建和切换时。 如果你看一下,创建一个分支并切换到它是很直观的。所以选择是你的:)

      【讨论】:

      • 这不会在 2011 年接受的答案上添加任何新信息。
      猜你喜欢
      • 2020-03-05
      • 2012-04-17
      • 2018-08-31
      • 2022-12-16
      • 1970-01-01
      • 2018-11-23
      • 2011-04-08
      • 1970-01-01
      相关资源
      最近更新 更多