Клонируйте свое репо.Не делайте это голым, так как это ограничит то, что вы можете сделать с filter-branch.
git clone /c/your/path/to/repo
зайдите в репо
cd !$:t
потеряете связь с репо, клонированным из
git remote rm origin
Создайте ветку с именем for-external.
git checkout -b for-external
Теперь запустите git filter-branch, чтобы сохранить только те каталоги, которыми вы хотите поделиться.
git filter-branch --subdirectory-filter path/to/your/project/to/share
Очистить
git branch | grep -v 'external' | xargs git branch -D
git gc --prune=now
Клонировать это где-то, как развернуться, чтобы дать ему доступ к нему.Теперь вы можете вносить изменения, которые он вносит, добавив эту новую партию в качестве удаленного к вашему личному репо.
git remote add unfuddle <url to your unfuddle repo>
git push -u unfuddle for-external:integration
Теперь вы можете внести его изменения и переназначить их поверх используемой вами ветви - возможно, новой, называемой "из-за границы".Затем вы можете объединить его изменения с вашими обычными ветками.Это можно сделать из обычного репо, а не из того, который вы изначально клонировали.
git remote add unfuddle <url to your unfuddle repo>
git fetch unfuddle
git branch -t from-consultant unfuddle/integration
Не пытайтесь развернуться отсюда, иначе вы можете случайно нажать на ветку, в которой есть другая информация.Вы можете создать другого пользователя и использовать другой ключ ssh, чтобы обеспечить доступ только для чтения к восстановленному репо из этого репо.
Вы можете использовать альтернативный URL в последней удаленной команде, которая соответствует ~ / .sshЗапись / config, которая сопоставит его с URL-адресом отката, но предлагает другой ключ с ограничением только для чтения.
Теперь, когда вы git fetch unfuddle
в своем исходном хранилище, вы можете получить его последние коммиты.Если вы хотите внести в него работу, вам нужно будет вытолкнуть его из другого репозитория, что потребует от вас добавления пульта снова, но будьте осторожны.
В прошлом это прекрасно работало для меня.