как оформить заказ в удаленной ветке - PullRequest
0 голосов
/ 02 мая 2019

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

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

У меня на самом деле есть четыре ветви в моем удаленном хранилище.Как можно оформить 3-ю или 4-ую ветку в моем регионе?

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

Ответы [ 3 ]

0 голосов
/ 02 мая 2019

OK, У меня есть следующее в 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 голосов
/ 02 мая 2019

Это:

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

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

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

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

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

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

0 голосов
/ 02 мая 2019

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

git fetch

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

git checkout -b feature2 origin/feature2

или, с последним Git, просто

git checkout feature2

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

...