В чем разница между git branch и git checkout -b? - PullRequest
0 голосов
/ 09 ноября 2019

Я очень новичок в git / gitlab и хочу подтвердить разницу между двумя командами на первом снимке экрана. Какова цель иметь 2 команды, которые обе создают новые ветви? Зачем вообще нужна «git branch»?

Это чисто там, если я хочу создать новую ветку, но не переключаться на эту ветку? Так что я сэкономил очень немного времени вместо того, чтобы делать 'git checkout -b new_branch' и затем 'git checkout previous_branch'.

Кроме того, почему говорится, что он ссылается на текущий HEAD? Я предполагаю, что это связано с 'remotes / origin / HEAD -> origin / master' во втором снимке экрана?

Я пытался 'git branch test_branch_name', который создал новую ветку без необходимости ссылаться на текущий HEADТак почему же упоминается ссылка на текущий заголовок?

enter image description here

enter image description here

Возможно, нет необходимости, но вот ссылка, откуда берется первый снимок экрана: https://about.gitlab.com/images/press/git-cheat-sheet.pdf

Ответы [ 2 ]

2 голосов
/ 09 ноября 2019

Чтобы заполнить еще несколько деталей:

... Почему даже необходима команда '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: tools . Вы можете резать древесину ленточной пилой, ножовкой, копировальной пилой, сверлом или долотом. Если вы хотите сделать ласточкин хвост, большинство из этих инструментов могли бы справиться с этой задачей, но это будет намного быстрее, лучше и проще с маршрутизатором и приспособлением для ласточкиного хвоста. Если ваша цель - установить набор замков и ручек, рассмотрите кольцевую пилу и сверло.

(Команда git checkout на самом деле содержит слишком много инструментов, встроенных в нее - в моемВ любом случае, по-видимому, официальные люди по обслуживанию Git приходят к такому же мнению, поскольку две основные задачи, которые может выполнять git checkout, теперь выполняются двумя отдельными интерфейсными командами: git switch и git restoreКонечно, в обычном Git-стиле git restore теперь может делать несколько вещей, которые git checkout не могут.)

Git в некотором смысле в основном представляет собой набор инструментов для манипулирования графами, которые могут перетаскиватьисходный код вместе с ними. Граф, которым вы управляете, представляет собой граф коммитов , который состоит из узлов (вершин графа), которые являются коммитами, соединенными односторонними краевыми связями (дугами), которые являются родительскими хэш-идентификаторами, хранящимися в каждом коммите. узел. См. Думай как (а) Git .

1 голос
/ 09 ноября 2019

git checkout -b [name] - это сокращение от git branch [name] && git checkout [name]. Последние версии Git также поддерживают git switch для извлечения ветки.

git branch [name] эквивалентно git branch [name] HEAD. git branch [name] является частным случаем git branch [name] [start-point]. Если start-point опущено, по умолчанию используется HEAD.

Для получения дополнительной информации см. git branch .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...