#git
Вопрос:
Я работаю между двумя отдельными репозиториями, которые в основном синхронизированы. Я немного понимаю обозначения различных удаленных источников для целей git pull и git push и могу синхронизировать любые изменения в существующих ветвях с помощью этих команд.
Я сталкиваюсь с проблемами, когда в репозитории создается новая ветвь. Каков рекомендуемый способ копирования/клонирования/объединения новой ветви в репозитории A, если в репозитории B такой ветви не существует?. Я искал множество решений, и мне еще предстоит найти чистый способ достижения этой цели.
Комментарии:
1. Я не уверен, что понимаю ваш вопрос. Разве
git push B <branch name>
из А илиgit pull A <branch name>
из Б не получилось бы то, чего вы хотите?2. Как правило, идея состоит в том, чтобы иметь один репозиторий для каждого проекта. Есть ли конкретная причина, по которой вы пытаетесь иметь одинаковый код в разных репозиториях? Если вы хотите хранить свой код в двух разных местах, вам может потребоваться два источника , что можно сделать из одного хранилища.
3. У меня не может быть одного хранилища, потому что оно пересекает границы компании. Следовательно, 2 хранилища.
4. Нет. Вытяните форму <имя ветви> B, что приведет к слиянию с любой ветвью, которую я извлек из A. Я получаю конфликты слияния, которых я пытаюсь избежать. Я просто хочу, чтобы новая ветвь из репо B была скопирована в репо A вместе с ее историей.
5. Итак, более подробно: я клонировал репозиторий B, а затем создал репозиторий A на основе этого клона. Команды Push и pull в ветвях, известных обоим репозиториям, работают должным образом. Однако я не знаю, как чисто скопировать новую ветвь из одного репозитория в другой.
Ответ №1:
Вы должны иметь возможность переместить любую ветвь в удаленное хранилище, независимо от того, существует ли там уже ветвь или даже если у двух хранилищ общая история.
Это должно сделать следующее:
git fetch repoA
— Перенесите все ветви из удаленного хранилища A в локальную копию.git checkout repoA/my_branch
— Переключитесь на ветвь в локальной копии, которую вы хотите поместить в репозиторий B. Обратите внимание, что это не создаст локальную ветвь, но фиксация repoA/my_branch будет проверена.git push repoB my_branch
— Переместите текущую фиксацию из локальной копии в новую ветвь удаленного репозитория B.
Если имя ветви еще не существует в репозитории B, то это должно работать просто отлично.
Обратите внимание, что это предполагает, что вы уже добавили оба пульта дистанционного управления в свой локальный репозиторий с помощью remote add
.
Комментарии:
1. Это решает мою проблему. Причина, по которой это не работало у меня раньше, в том, что я не выполнял удаленное добавление в репоБ. Спасибо.