Я работал с коллегой, чтобы привести в порядок некоторый код, который был написан некоторое время назад. Это все в Github-хранилище (частном), и есть много ветвей и фиксирующих запись длинного перехода от одного уродливого скрипта Python со спагетти-кодом в гораздо более модульную, тестируемую конструкцию.
Теперь нам нужно представить эту более позднюю версию внешнему миру, потому что это основа для статьи, которую мы пытаемся опубликовать. Очевидно, что мы могли бы просто сделать хранилище общедоступным, но слишком много откровенно смущающего кода - и несколько файлов данных, которые были переданы случайно, которые нельзя допустить утечки за пределы организации, - чтобы мы могли это сделать.
Я хотел бы иметь возможность создать новый репозиторий, который просто содержит версии выпуска кода. Я хочу, чтобы между этими двумя репозиториями поддерживались ссылки, чтобы я мог затем перейти к более поздним версиям кода по мере его разработки. Есть ли простой способ добиться этого, чтобы история из репо1 не перетекла в репо2?
В виде ASCII-искусства я хочу получить два репозитория, которые выглядят так:
repo1 (private)
A -- B -- C -- D -- H -- I -- J
\ \
E ------- F -- G
repo2 (public)
X -- G
так, что ветви в repo1 и repo2, которые ссылаются на G
, остаются связанными.
Обратите внимание, что A
и X
отличаются, потому что частное репо началось с массивного, уродливого сценария, которому никто никогда не должен подвергаться, а публичное репо начинается с README, лицензии и * 1015. * файл.
Если я ссылаюсь на repo2 как на удаленный от repo1, я могу протолкнуть ветвь, указывающую на G, но она возвращает всю ветвь полностью обратно к A
, что не то, что я хочу. Я думаю , что мне нужно подтолкнуть X
к репо1, а затем создать там ветку, в которую я могу слить G
и отодвинуться назад, но мне не удалось найти ничего, описывающего такого рода операция, и я сомневаюсь, что «неподключенный» узел может быть представлен в графе Git. Есть ли способ добиться того, что мне нужно, кроме простого копирования файлов из repo1 в совершенно отдельный repo2?