Можно работать только с частью репозитория git?
Я разрабатываю настольное приложение с JGit
для того, чтобы построить облачную систему для хранения файлов.
Сейчас несколько пользователей вносят свой вклад в один и тот же репозиторий, но не всем интересно работать со всем проектом.
Например, я разрабатываю с другими программное обеспечение с MVC
архитектура, мне просто нужно получить доступ к контроллеру-подкаталогу проекта. Для этого, когда я clone/pull/push
хранилище я хочу просто работать с той частью, которая мне нужна. Я видел возможность создавать подмодули или оформить заказ с git
, но я не понял, является ли правильный путь для моей проблемы.
2 ответа
Простой ответ заключается в том, что вы можете сделать это, но длинный ответ таков:
Git хранит снимки ВСЕГО содержимого репо в каждом коммите, если вы хотите использовать только его часть, вам в основном нужно будет извлечь только ту часть, которая вам нужна, а когда вы совершите коммит, вам понадобится весь контент репозитория. текущий коммит.
Итак, снова вы можете сделать это, но вы ничего не получите от этого.
Вы упомянули, что слышали о субмодулках.
Вот полное объяснение субмодуля / поддерева
Вы можете попробовать прочитать о подмодулях.
Submodules
разрешить встраивание внешних репозиториев в выделенный подкаталог дерева исходных текстов, всегда указывающий на конкретный коммит.
git submodule
Разбейте ваш большой проект на подпроекты, как вы делали до сих пор.
Теперь добавьте каждый подпроект в основной проект, используя:
git submodule add <url>
После того, как прогноз будет добавлен к вашему репо, вы должны его инициализировать и обновить.
git submodule init
git submodule update
Начиная с Git 1.8.2 новая опция --remote
был добавлен
git submodule update --remote --merge
будут fetch
последние изменения из апстрима в каждом подмодуле, merge them in
, а также check out
последняя редакция субмодуля.
Как документы описывают это:
--remote
Эта опция действительна только для команды обновления. Вместо того, чтобы использовать записанный SHA-1 суперпроекта для обновления подмодуля, используйте статус ветви удаленного отслеживания подмодуля.
Это эквивалентно запуску git pull в каждом подмодуле.
Тем не менее, как бы я протолкнул коммит в сценарии исправления ошибок в C, который влияет на код, общий для родительских слоев?
Опять же: использование субмодуля поместит ваш код в ваш основной проект как часть его содержимого. Различие между локальным размещением в папке или наличием его как части подмодуля состоит в том, что в подмодуле контент управляется (передается) в другой автономный репозиторий.
Это иллюстрация субмодуля - проекта внутри другого проекта, в котором каждый проект является отдельным проектом.
git subtree
Git поддерево позволяет вам вставить любой репозиторий как подкаталог другого
Очень похоже на submodule
но главное отличие в том, где ваш код управляется. В подмодулях контент размещается внутри отдельного репо и управляется там, что позволяет вам клонировать его и во многие другие репо.
subtree
управляет контентом как частью корневого проекта, а не как отдельный проект.
Вместо того, чтобы записывать, как его настроить и понять, как его использовать, вы можете просто прочитать этот отличный пост, который объяснит все это.
https://developer.atlassian.com/blog/2015/05/the-power-of-git-subtree/
Вы можете создать новую ветку для него. Git - Филиалы, вот учебник.
Когда вы закончите со своей работой, объедините ее так, чтобы каждый в проекте мог увидеть эффект.