dkpage
@dkpage
Учусь

Как настроить слежение за внешней веткой Git, чтобы сделать git pull?

На GitLab есть ветки:
dev: куда сливаются все ветки после MR
И остальные ветки, в которых работаю
feat/1
feat/2
...

На локальном ПК те же самые ветки:
dev: от которых я делаю новые ветки
ну и сами ветки:
feat/1
feat/2
...

Я сделал новую ветку от dev (к примеру, ветка test) и хотел через git pull забрать изменения с внешней основной ветки dev, но получил в консоли это:
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream-to=origin/<branch> test


Как настроить слежение за внешней веткой и как это работает в теории.
Если я пишу git branch --set-upstream-to=origin/test test то потом git pull пишет что изменений нет, хотя с dev он ничего не забрал.

А если напишу origin/dev test, то он, получается, будет отслеживать dev и git pull заберет изменения, но не получится ли что при git push он commit зальет сразу в dev.

То есть должен забирать с dev, но пушить в свои ветки по названиям.
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
sergey-kuznetsov
@sergey-kuznetsov Куратор тега Git
Автоматизатор
Я сделал новую ветку от dev ( к примеру ветка test ) и хотел через git pull забрать изменения с удаленной основной ветки dev

Зачем создавать ветку от старого состояния dev, а потом обновлять? Не лучше ли сначала скачать к себе всё, а потом создавать тематическую ветку от актуальной dev? Распаковывать локально ветку dev смысла нет, если вы напрямую в неё коммитить не будете.
Я бы делал так:
git fetch # скачать всё новое с внешнего репо
git checkout -b origin/dev # создаем ветку от актуальной dev


There is no tracking information for the current branch

Логично же? Вы не связали новую ветку ни с какой внешней и как Git поймет, откуда скачивать?
У команды Pull в таком случае должно быть два дополнительных параметра, указывающие из какого репозитория и из какой ветки обновляться
git pull origin dev

забирать с dev но пушить в свои ветки
это возможно организовать, но вам это не нужно. А вдруг вы захотите поработать на другом компе? Как тогда будете забирать обновления своей ветки? Не усложняйте.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
AshBlade
@AshBlade
Просто хочу быть счастливым
То есть должен забирать с dev но пушить в свои ветки по названиям.

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

Делай отдельную ветку для фичи/экспериментов, а если нужны обновления, то git merge
Ответ написан
Комментировать
@sergiodev
git pull вытягивает изменения с удалённой ветки, связанной с локальной веткой (в гите это называется upstream). Ваша ветка test связана с origin/test, поэтому git pull без указания названия ветки будет тянуть коммиты из origin/test.

Попробуйте так (находясь в ветке test):

git pull origin/dev
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы