Git: настройка одного удаленного отслеживания из публичного репо - PullRequest
1 голос
/ 08 июня 2010

Я путаюсь с удаленными ветками.

Мой локальный репо:

(local) ---A---B---C-master

Мое удаленное репо (называется int):

(int) ---A---B---C---D---E-master

Что я хочу сделать, так это настроить основную ветку локального репо, чтобы она соответствовала int. Локальное РЕПО:

(local) ---A---B---C---D---E-master-remotes/int/master

Так что когда int изменится на:

(int) ---A---B---C---D---E---F-master

Я могу запустить git pull от мастера локального репо и получить

(local) ---A---B---C---D---E---F-master-remotes/int/master

Вот что я пробовал:

  1. git fetch int переводит меня все ветви int в удаленные ветви. Это может запутаться, поскольку int может иметь сотни веток.

  2. git fetch int master получает мне коммиты, но без ссылки на него, только FETCH_HEAD. Удаленной ветви тоже нет.

  3. git fetch int master:new_master работает, но я не хочу, чтобы новое имя каждый раз обновлялось, и удаленная ветвь не настроена.

  4. git pull int master делает то, что я хочу, но по-прежнему нет настройки удаленной ветви. Я чувствую, что это нормально (это лучшее, что у меня есть сейчас), но я тут и там читал, что для удаленной настройки достаточно с git pull.

  5. git branch --track new_master int/master, согласно http://www.gitready.com/beginner/2009/03/09/remote-tracking-branches.html. Я получаю «недопустимое имя объекта: int / master». git remote -v показывает, что int определен и указывает на правильное местоположение (1. работал). Я скучаю по ветке int / master, которую я и хочу получить.

  6. git fetch in master:int/master. Хорошо, int / master создан, но не удален.

Итак, подведу итог: я попробовал кое-что без удачи. Я ожидаю, что 2 даст мне удаленную ветку для управления в репо int.

Решение, которое я использую сейчас, это вариант 3.

Я где-то читал, что вы можете вручную изменить какой-нибудь конфигурационный файл, но не слишком ли это громоздко?


"Громоздкий" способ редактирования файла конфигурации сработал:

[branch "master"]
    remote = int
    merge = master

Это можно сделать из командной строки:

$ git config branch.master.remote int

$ git config branch.master.merge master

Любая причина, почему вариант 2 выше не будет делать это автоматически? Даже в этом случае git pull выбирает все ветви с пульта.

1 Ответ

1 голос
/ 08 июня 2010

Сначала убедитесь, что в вашем рабочем дереве нет текущей работы.

Затем попробуйте (с Git1.7.0 или более):

git fetch int master
git branch --force -- set-upstream master int/master
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...