ChatGPT解决这个技术问题 Extra ChatGPT

“git branch”和“git checkout -b”有什么区别?

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


P
Patrick Allaert

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

git checkout 不会在没有 -b 开关的情况下使用,只是从远程签出分支,这样我们就有了它的本地副本吗?
@quantum231 正确。 -b 切换到刚刚创建的新分支副本。
git switch -c BRANCH_NAME 也与 git checkout -b BRANCH_NAME 一样工作
d
ddavison

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

git checkout -b 创建一个分支并将其签出。

它可以被认为是以下形式的简短形式:

git branch name
git checkout name

让我们说:“git branch 创建了分支,但您仍保留在当前分支中,您已从其中签出。”
@AkashVerma 如果您能详细说明为什么您在回复中坚持的“来自哪个”很重要,这将对读者有所帮助。
f
froehli

git branch:显示所有分支

git branch newbranch:创建一个新分支

git checkout -b newbranch:创建一个新分支并立即切换到该分支。这与 git branch newbranch 后跟 git checkout newbranch 相同。


T
Tuong Le

完整语法:

git checkout -b [NEW_BRANCH] [FROM_BRANCH]

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


d
ddavison

还有一个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 不会只是 切换,它还会将目标分支重置为前一个分支的提交(或指定的提交)。这也可能很危险,因为在较新的分支上重新运行 checkout -B 可能会将分支提交重置回前一个分支,如果前一个分支落后,这将删除最近的提交。
P
Pshemy108

这两个命令的形式相似(查看 git-scm docs 版本 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 要求有所不同。 (如果您真的认为这很重要,我会在已接受的答案中添加评论。)
u
user2238769

本质上 :

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

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

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


这不会在 2011 年接受的答案上添加任何新信息。