Лучший способ настроить репозиторий git с использованием другого репозитория git

#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 для комплексного тестирования.