В чем разница между «git branch» и «git checkout -b»?


Ответы:


259

git checkout -b BRANCH_NAMEсоздает новую ветку и проверяет новую ветку, а git branch BRANCH_NAMEсоздает новую, но оставляет вас в той же ветке.

Другими словами, git checkout -b BRANCH_NAMEделает следующее для вас.

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

44

git branch создает ветку, но вы остаетесь в текущей ветке, которую вы извлекли.

git checkout -b создает ветку и проверяет ее.

Это можно считать краткой формой:

git branch name
git checkout name

Скорее, скажем: «git branch создает ветку, но вы остаетесь в текущей ветке, из которой вы извлекли».
Акаш Верма

28
  • git branch: Показывает все ваши ветви
  • git branch newbranch: Создает новую ветку
  • git checkout -b newbranch: Создает новую ветку и немедленно переключается на эту ветку. Это то же самое, что git branch newbranchи git checkout newbranch.

24

Полный синтаксис:

git checkout -b [NEW_BRANCH] [FROM_BRANCH]

[FROM_BRANCH] является необязательным. Если нет FROM_BRANCH, git будет использовать текущую ветку.


7

Есть также еще один флаг, чтобы упомянуть, который относится к этим ..

git checkout -B BRANCH_NAME

Это очень полезная команда, которую я недавно использовал. Эта команда проверяет указанную вами ветвь и сбрасывает ветку на основе исходной ветки.


2
Можете ли вы объяснить больше? Я не знаю, что означает сброс для мерзавца
Микаэль Майер

3
Из руководства по 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>
ddavison

То есть вы имеете в виду, что можете повторно использовать существующую ветку?
Микаэль Майер

1
Является ли checkout -Bопасно , если ветвь вы переход на общий другими? Я использовал это недавно, и, похоже, он автоматически сливался в изменениях в моей другой ветке с веткой, на которую я переключился.
Джефф

если вы извлечете другую ветку для разработчиков с удаленного компьютера и выполните a, git checkout -Bто да, она слилась бы или, возможно, даже заменила
ddavison

-1

Существуют формы обеих команд, которые похожи (смотрите git-scm docs Версия 2.11.1):

git branch <branchname> <start-point>

и

git checkout -b <new_branch> <start_point>

Последнее выполнение команды ветвления первой , а затем добавить проверку. В этой форме явно ссылаются на документ git-branch:

Указание -b вызывает создание новой ветви, как если бы git-branch [2] была вызвана и затем извлечена


1
Это не добавляет никакой новой информации о принятом ответе от 2011 года.
melpomene

Это фактически добавляет новую информацию о <начальная точка>. Который я лично нашел весьма полезным для создания веток в другом месте, находящемся в другом месте, без необходимости предварительно извлекать объект или перемещать текущую ветвь. Использование обозначений как [FROM_BRANCH], когда на самом деле подразумевается git-ссылка, на мой взгляд, бесполезно.
Pshemy108

Необязательный второй аргумент не имеет отношения к вопросу. То же самое между обеими командами, и OP спрашивал разницу. (Если вы действительно считаете это необходимым, я бы просто добавил комментарий к принятому ответу.)
melpomene

-1

По существу:

A-git branch позволяет вам создавать простые и простые ветки.

B -git checkout -b позволяет вам создать ветку и одновременно переключиться на нее.

Когда вы будете использовать что? 1- git branch, когда вы хотите создать ветку, но остаетесь в текущей ветке. 2- git checkout -b, когда вы хотите создать и переключиться. Если вы посмотрите на это, интуитивно понятно создать ветку и переключиться на нее. Так что выбор за вами :)


4
Это не добавляет никакой новой информации о принятом ответе от 2011 года.
melpomene
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.