#git #github #gitlab
#git #github #gitlab
Вопрос:
Это немного сложно в том, что я пытаюсь спросить, поэтому, пожалуйста, потерпите меня.
Существует общедоступный репозиторий git, давайте назовем его «repoA». У него есть ветка «мастер». У меня есть своя собственная копия кода (не разветвленная, просто загруженная и скопированная). Я создал свой собственный отдельный репозиторий, используя этот код, назовите его ‘repoB’ (непубличный репозиторий), мастер ветки.
Я работаю над главной ветвью кода из repoB, и у меня нет проблем с внесением изменений в код, перетаскиванием и отправкой в repoB. Однако время от времени человек, работающий над репозиторием, может вносить изменения в код, добавлять новый код и т. Д., Которые я хочу иметь в своей основной ветке из repoB, над которой я работаю. В идеале я хотел бы объединить изменения в master на repoB из repoA, при этом любые конфликтующие изменения по умолчанию сохранят мой код в repoB, если такой конфликт возникнет.
Мне было интересно, есть ли разумный способ организовать это, и как я буду это делать. Единственное, что я мог придумать, — это вручную скопировать главную ветку repoA в отдельную ветку ‘branch2’ в repoB при каждом обновлении repoA, а затем объединить 2 ветки. Тем не менее, это звучит очень многословно, и мне было интересно, есть ли более разумный способ сделать это.
Приветствия
Комментарии:
1. Есть ли какая-то причина для того, чтобы не использовать вилку? Если у двух репозиториев есть какие-то общие коммиты, можно объединить ветви из удаленных репозиториев.
2. В настоящее время мы хотим внести некоторые изменения и / или создать данные, которые на данный момент должны оставаться внутренними в нашей gitlab, поэтому в настоящее время я не решаюсь настроить все таким образом, чтобы потенциально сделать нашу копию общедоступной или иметь возможность вносить изменения в общедоступную версиюкод ‘repoA’. Надеюсь, это имеет смысл.
3. В этом случае, я думаю, я бы сосредоточил внимание на политиках доступа, чтобы убедиться, что никто случайно не отправляет закрытый код в общедоступный репозиторий. Наличие двух разных репозиториев git с одним и тем же кодом выглядит для меня как неправильное использование инструмента. Как распределенная система, git предназначена для поддержки подобных сценариев с несколькими удаленными репозиториями.
Ответ №1:
Вы можете настроить repoA как восходящий, а repoB как исходный. Чтобы предотвратить отправку отправлений в репозиторий, установите для push url фиктивный, используя git remote set-url --push upstream dummy_url
Это позволяет вам извлекать код из репозитория и отправлять его в repoB. В repoB оставьте master
ветку как есть и создайте integrated-master
ветку, которую можно использовать для объединения ваших изменений с основными изменениями repoA для комплексного тестирования.