Вам понадобится репозиторий для каждой из частей. (каждый проект и один или несколько для общих частей).
Чтобы включить эти общие части, есть две возможности.
Сначала просто, вы создаете (приватный) гем для общих частей, это означает, что вам не нужно ничего связывать, просто добавьте gem [gemname] в ваш Gemfile. Когда вы обновите гем, все проекты будут использовать измененный код.
Если вы хотите включить внешний код в ваш проект, вам нужно немного организовать. Вы создаете корневую карту, в которую вы клонируете и общий репозиторий, и репозиторий проекта. Затем вы создаете (относительную) символическую ссылку на папку общего кода. Вы можете просто добавить эту символическую ссылку в ваш репозиторий git и зафиксировать ее. Вы должны обновить и зафиксировать оба репозитория по отдельности.
Пример второго метода:
- projectfolder
--- shared code
--- project code
----- lib
------- shared (link to shared code)
Ссылка на общий код создается командой ln -s "../../../shared code" shared
Конечно, это работает только в системах, поддерживающих символические ссылки (mac и * nix)