У меня есть два URL-адреса репозитория, и я хочу их синхронизировать, чтобы они содержали одно и то же. В Mercurial я пытаюсь сделать следующее:
hg pull {repo1}
hg pull {repo2}
hg push -f {repo1}
hg push -f {repo2}
Это приведет к двум головам в обоих репозиториях (я знаю, что это не так просто, чтобы иметь две головы, но я делаю это для синхронности, и это должно быть неинтерактивным. Головы будут объединены вручную из одного из repos, а затем снова запустить синхронизацию).
Я хотел бы сделать то же самое в Git. Например, без взаимодействия с пользователем, получить все изменения в обоих репозиториях, с несколькими ветвями/головами/тем, которые впоследствии будут объединены. Я пытаюсь сделать это, используя URL-адреса в командах, вместо добавления пультов (?), Так как может быть задействовано несколько репозиториев, и с их псевдонимами все упростит мой script.
В настоящее время я клонирую репо с помощью git clone --bar {repo1}
, но я изо всех сил пытаюсь "обновить" его. Я пробовал get fetch {repo1}
, но это, кажется, не тянет мои изменения; git log
по-прежнему не отображается набор изменений, добавленный в repo1.
Я также попытался использовать --mirror
в моих push
и clone
, но это казалось удаленным наборам изменений из repo2, которые не существовали локально, тогда как мне нужно сохранять изменения от обоих репозиториев:/
Какой лучший способ сделать это?
Изменить: Чтобы сделать это немного яснее, что я пытаюсь сделать...
У меня есть два репозитория (например, BitBucket и GitHub) и хочу, чтобы люди могли нажимать на них (в конечном счете, один будет Git, один будет Mercurial, но пусть предположим, что они оба Git для теперь для упрощения вещей). Мне нужно иметь возможность запускать script, который будет "синхронизировать" два репозитория таким образом, что оба они содержат оба набора изменений и могут потребовать слияния вручную позже.
В конце концов, это означает, что я могу просто взаимодействовать с одним из репозиториев (например, Mercurial), а мой script будет периодически втягивать изменения Git, которые я могу объединить, а затем они будут нажаты назад.
В Mercurial это тривиально! Я просто вытаскиваю из обоих репозиториев и нажимаю -f/--force
, чтобы можно было нажать несколько головок. Тогда любой может клонировать один из репозиториев, объединять головы и отталкивать назад. Я хочу знать, как сделать ближайшую аналогичную вещь в Git. Он должен быть на 100% неинтерактивным и должен поддерживать оба РЕПО в состоянии, что процесс может повторяться бесконечно (это означает, что переписывание истории/изменение наборов изменений и т.д.).