2016-09-05 2 views
0

Здравствуйте ситуация следующая:Как Git тянуть к новой ветке, не затрагивая текущую ветку?

У меня есть два удаленных филиалов: master и dev

dev имеет больше фиксаций, чем мастера (журнал мерзавца).

В моем локальном хранилище я клонировал только мастера. Поэтому я позиционируюсь на ветке master.

Из этой ситуации я бы хотел потянуть dev ответвление, не затрагивая master.

То, что я сделал это:

$(master) : git pull origin dev:dev 

Но результат был:

Я теперь мой dev филиал обновлен, но и master филиал был объединен с dev филиал (неожиданный)

Итак, мой вопрос в том, как я могу извлечь из удаленной конкретную ветвь в локальную конкретную ветвь (даже если я не располагаюсь на целевой ветке)?

Я думал

$git pull origin specific_remotebranch:specific_localbranch 

не будет влиять на мою текущую ветку ... это (всегда),?

+0

Что вы здесь задаете? –

+0

1. вы клонируете репо - 2. на удаленном репо была добавлена ​​новая ветвь dev - 3. Я хочу вытащить эту удаленную ветвь на свое местное репо.Вопрос: Возможно ли это сделать из текущей ветви (ведущей), не связывая текущую ветку с этой новой удаленной ветвью (dev). Это что-то необычное? Другая аналогичная проблема может быть: у меня есть две удаленные ветви и два локальных филиала A & B, как я могу обновить только ветвь B, даже если я локально размещен на ветке A? (т. е. из ветви A git тянуть начало B, не влияя на историю A?) – koalaok

+0

Непонятно, что вы пытаетесь сделать, почему вы хотите это сделать и т. д. Необычно, что нужно выйти за пределы стандартных инструментов рабочего процесса который предоставляет интерфейс Git. Вы, конечно, стараетесь это сделать, но я подозреваю, что это не нужно. Чтобы быть ясным, если вы нажмете 'dev', ваш локальный' master' НЕ будет объединен ни с чем. Ничего не происходит локально, если вы не разрешаете это делать. –

ответ

2

я узнал, что я искал:

Я пытался «тянуть» вместо того, что я действительно хотел это забрать + «проверить» действия

Смотрите здесь: How do I check out a remote Git branch?

// давайте доступны все удаленные филиалы

$git fetch 

// давайте создадим новую ветвь от удаленного просто неправдоподобным

$git checkout dev 

Похоже, что для этого не существует уникального тягового усилия.

+0

Я столкнулся с той же проблемой, и это меня укрепило. Благодаря! Я понял, что это наша ментальная модель, это неправильно: 'pull' является [для извлечения и ** интеграции ** из другого репозитория] (https://git-scm.com/docs/git-pull), в то время как в этом случае есть не требуется интеграция (слияние или перебаза); просто переход на эту ветвь. Следовательно, «проверка» - это правильная вещь. – legends2k

0

На моем местном репо я клонировал только хозяина. Я размещен на главной ветке.

Вы могли бы быть только проверить главный филиал, но если вы делаете что-то действительно необычное, вы всегда клонировать полный репозиторий, включая все ветви.

Обычно вы можете указать git fetch, чтобы указать местную головку dev на пульт дистанционного управления dev.

+0

Да, я согласен с вами, но, к сожалению, ветвь dev, как это случилось со мной, была создана после этого. Вопрос моего вопроса в том, как вытащить rbranch в lbranch, не влияя на текущий? Синтаксис, который я опубликовал, и полагал, что это правильный ответ на конкретную ветку, не будет работать. Даже если у меня есть все ветви локально, Если я вытащу из другой ветки, текущая ветка будет драматически слита ... – koalaok

+0

, так что ваш ответ - мой ответ? –