Я вижу две удаленные ветви в моем локальном хранилище:

$ git branch -a
  remote/origin/master
  remote/origin/feature1

На самом деле у меня есть четыре ветви в моем удаленном хранилище. Как оформить заказ на 3-й или 4-й филиал в моем местном отделении?

Я пробовал много команд при поиске в интернете, ни одна из них не работала для меня. У меня нет проблем с получением обновлений на ветках master и feature1 от удаленного к локальному.

0
H.Sheng 2 Май 2019 в 19:43

3 ответа

Лучший ответ

Этот:

[remote "origin"]
    url = <url>
    fetch = +refs/heads/feature1:refs/remotes/origin/feature1
    fetch = +refs/heads/master:refs/remotes/origin/master

Является источником проблемы. Здесь вы указали вашему Git, что независимо от того, какие ветви существуют в Git over origin, вы хотите, чтобы ваш Git брал и запоминал только feature1 и master, которые вы назовете origin/feature1 и origin/master.

Стандартная настройка fetch по умолчанию для origin, если вы ее не изменили, это:

fetch = +refs/heads/*:refs/remotes/origin/*

Если бы у вас была настройка this , все работало бы автоматически.

(Тогда возникает вопрос: почему вы перестали использовать стандартную настройку по умолчанию, когда вам кажется, что поведение предоставило от стандартной настройки по умолчанию? Изменить: и, очевидно, ответ на этот вопрос: вы не сделали, Eclipse / EGit сделал.)

0
torek 2 Май 2019 в 19:32

Ваш локальный репозиторий может быть устаревшим в отношении происхождения. Чтобы догнать, бежать

git fetch

Теперь вы должны увидеть другие ветви. Если одна из этих веток называется feature2, то выполняется

git checkout -b feature2 origin/feature2

Или, с недавним мерзавцем, просто

git checkout feature2

Извлечет ветку и настроит отслеживание, если вы сотрудничаете с другими разработчиками.

0
Greg Bacon 2 Май 2019 в 16:50

В порядке, У меня есть следующее в файле config моего локального репозитория git

[remote "origin"]
    url = <url>
    fetch = +refs/heads/feature1:refs/remotes/origin/feature1
    fetch = +refs/heads/master:refs/remotes/origin/master
[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "feature1"]
    remote = origin
    merge = refs/heads/feature1
    rebase = false

После того как я добавлю удаленную ветвь feature2 в раздел [remote "origin"],

[remote "origin"]
    url = <url>
    fetch = +refs/heads/feature1:refs/remotes/origin/feature1
    fetch = +refs/heads/master:refs/remotes/origin/master
    fetch = +refs/heads/feature2:refs/remotes/origin/feature2

Затем беги

git fetch --all
git branch -a

Я вижу удаленную ветвь feature2 в выводе. И я могу оформить заказ feature2 сейчас.

Остается один вопрос: как мне синхронизировать информацию о ветках моего локального репозитория git с удаленным репо без необходимости вручную изменять файл config?

0
H.Sheng 2 Май 2019 в 17:44