Как мне обрабатывать две отдельные, но очень похожие кодовые базы с помощью git / github?

Как лучше всего обрабатывать две отдельные, но очень похожие кодовые базы в git и git-hub?

Справочная информация

У меня есть репозиторий git для небольшого проекта сценария оболочки. В нем всего 2 или 3 файла кода, и я часто работаю с одним файлом. Хотя изначально я создавал этот проект для моей конкретной цели, я пишу его, чтобы он был более полезным для других. Я пишу общую версию варианта использования, а затем изменяю ее в соответствии с моей конкретной целью.В конкретной версии я мог бы изменять переменные, вводить пароль, переключать порядок некоторых частей кода, извлекать цикл for… что угодно.

Что я пробовал

Я пробовал два разных метода, и ни один из них не работает так оптимально, как я мог бы подумать:

  1. Два отдельных репозитория
    • Проблема: код изменен в одном, не может быть легко и выборочно объединен с другим
  2. Две ветки в одном репо
    • Проблема: В конечном итоге ветви должны снова объединиться. Я не имею в виду когда-либо полностью объединить их вместе, а хочу выборочно объединить части кода.
    • Проблема: я обнаружил, что при попытке использовать команды слияния между ветвями очень легко было запутаться, какой код в какой ветке сливается. Я каким-то образом объединил код между двумя из них, что было совершенно непреднамеренно, и не было никаких указаний на неправильное слияние, пока я не посмотрел содержимое файлов в обеих ветвях

Я также увидел Как объединить два отдельных - но похожее - кодовые базы в один SVN rep? , то есть о SVN. Мне сложно следовать, так как я не знаю SVN. Я думаю, что это другой вопрос, потому что он не пытается сделать одну версию этого кода общедоступной.

Примеры использования, которые я хочу решить

В частности, проблема обнаруживается, когда:

  • Синхронизация комментариев - я готовлю свою специализированную версию и замечаю, что могу добавить поясняющий комментарий в конце строки. Добавляю, но комментария теперь нет в обобщенной версии.
  • Вещи, которыми я не хочу делиться - я готовлю свою специализированную версию и добавляю пароль или меняю порядок выполнения операций. Я НЕ хочу, чтобы эти изменения коснулись обобщенной версии.
  • Один и тот же файл - два вышеуказанных изменения часто находятся в одном файле, что затрудняет объединение данных. Есть интерактивные слияния, но я не знаю, можно ли взаимодействовать в одном файле.
  • Общие -> Специализированные - я или кто-то другой мог бы обновить обобщенную версию, чтобы добавить новый контент или комментарии, которые было бы полезно иметь и в моей специализированной версии. Я хочу перенести их из общего -> специализированного, не вмешиваясь в какие-либо различия кода в специализированной версии.

Git vs Github

В основном мой вопрос заключается в том, как это сделать внутри ограничений git. Однако это может иметь значение и для взаимодействия с github. Моя обобщенная версия размещена на github. Специализированная версия НЕ ДОЛЖНА быть на github. Я думаю , что мой метод ветвления выше не проталкивал обе ветки, если я был осторожен ... но я всегда был не уверен. В любом случае решение должно допускать наличие одной общедоступной версии и одной версии, которая хранится локально ... даже если она немного сложна или требует внимания.

6
задан Community 23 May 2017 в 12:00
поделиться