Яка різниця між “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 створює гілку, але ви залишаєтесь у поточній гілці, від якої ви перевірили".
Акаш Верма

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
Чи можете ви пояснити більше? Я не знаю, що означає скидання для git
Mikaël Mayer

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

Отже, ви маєте на увазі, що ви можете повторно використовувати існуючу гілку?
Mikaël Mayer

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

якщо ви отримаєте іншу гілку розробників з віддаленого і зробите git checkout -Bтоді так, вона
злиється

-1

Існують форми обох команд, схожі (дивлячись на git-scm docs Версія 2.11.1):

git branch <branchname> <start-point>

і

git checkout -b <new_branch> <start_point>

Останнє виконання команди розгалуження першої , а потім додати перевірку. У цій формі явно посилаються на doc git-branch:

Вказівка ​​-b спричиняє створення нової гілки так, ніби виклик git-гілки [2] та потім перевірка


1
Це не додає нової інформації щодо прийнятої відповіді від 2011 року
melpomene

Це фактично додає нову інформацію про <start-point>. Що я особисто знайшов досить корисним для створення гілок на іншому місці, що знаходиться в об'єкті, без необхідності спочатку перевірити об'єкт або перемістити поточну гілку. Використання позначень як [FROM_BRANCH], коли мається на увазі посилання на git, на мій погляд, не є корисним.
Pshemy108

Необов'язковий другий аргумент не має відношення до питання. Це однаково між обома командами, і ОП просив різниці. (Якщо ви дійсно вважаєте, що це важливо, я б просто додав коментар до прийнятої відповіді.)
melpomene

-1

По суті:

Гілка A-git дозволяє створювати гілку просто та просто.

B -gout check -b дозволяє створити гілку та переключитися на неї одночасно.

Коли ви будете використовувати який? 1- git гілка, коли ви хочете створити гілку, але залишайтеся на поточній гілці. 2- git check -b, коли потрібно створити та переключитись. Якщо ви подивитесь, то створити гілку та перейти на неї інтуїтивно зрозуміло. Тож вибір за вами :)


4
Це не додає нової інформації щодо прийнятої відповіді від 2011 року
melpomene
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.