Разница между проверкой существующей и проверкой новой ветви в Sourcetree

#git #atlassian-sourcetree #git-checkout

#git #atlassian-sourcetree #git-проверка

Вопрос:

В sourcetree я хотел бы просто проверить удаленную ветку разработки, чтобы я мог запустить там новую ветку функций. В настоящее время я нахожусь в другой ветке функций, в которой я зафиксировал и перенес все свои изменения.

Однако, когда я щелкаю правой кнопкой мыши по удаленной ветке origin / develop, я получаю это: введите описание изображения здесь

По какой-то причине я нигде не могу найти, в чем здесь разница. Я не хочу прерывать репозиторий на моей новой работе, поэтому я очень осторожен. В GitKraken вы просто выполняете проверку на удаленном компьютере и при необходимости обновляете свою локальную ветку разработки.

Ответ №1:

Что это делает, так это:

 git checkout -b develop --track origin/develop
  

Это гарантирует, что локальная ветвь develop будет отправляться, по умолчанию, в удаленную ветвь origin/develop .

Обратите внимание, что с Git 2.23 это было бы git switch

 git switch -c develop --track origin/develop
  

SourceTree еще не интегрировал эту новую команду.


Я не хочу прерывать репозиторий на моей новой работе, поэтому я очень осторожен

Это ничего не нарушит: это только локальная операция.


Это отличается от «Checkout existing», в котором будут перечислены только существующие локальные или удаленные ветви, что делает его эквивалентом:

 git switch <branch>
  

Комментарии:

1. Это отличный ответ на вопрос «Что делает ‘Проверка новой ветки'». Не могли бы вы добавить одно или два предложения, объясняющих, чем это отличается от «Проверки существующей»?

2. @DavidCary Конечно. Я соответствующим образом отредактировал ответ.

Ответ №2:

Я не очень хорошо знаю GitKraken или Sourcetree, но в целом вы бы не захотели напрямую проверять ветку удаленного отслеживания в Git. То есть, в общем случае вы бы не хотели этого делать:

 git checkout origin/develop
  

Причина в том, что отслеживающие ветви, как следует из названия, существуют в основном для того, чтобы отслеживать состояние истинной удаленной ветви. Но вся ваша локальная работа должна быть перенесена куда-нибудь в новую локальную ветку.

Итак, возвращаясь к вашему вопросу Sourcetree и скриншоту, я не вижу в этом ничего удивительного. Вы говорите, что хотите создать новую локальную ветку develop , основанную на ветке отслеживания origin/develop . Кроме того, вы сообщаете Sourcetree / Git, что хотите, чтобы эта локальная ветка отслеживала ветку удаленного отслеживания origin/develop .

Ответ №3:

Я не слишком знаком с sourcetree, но обычно вы можете создать новую ветку через проверку (если вы добавляете a -b к команде в командном окне), поэтому я бы предположил, что проверка новой ветки делает именно это, в то время как другая позволяет проверять существующие ветки