Слияние только измененных файлов с помощью Git - PullRequest
4 голосов
/ 11 мая 2009

У меня есть хранилище, которое содержит файлы контента и исходного кода. Разработчики должны работать только с исходными файлами. Чтобы сэкономить место, разработчики не должны клонировать файлы контента (которые находятся в ГБ) в их локальное хранилище. Исходные файлы не представлены в проекте как подмодули, а находятся в том же месте, где находится содержимое.

Мой подход такой: я создал ветку Источник из Мастер , а затем удалил файлы содержимого из этой ветви. И я опубликовал ту же ветку для клонирования для разработчиков.

Когда я объединяю изменения из ветви Source обратно в Master , файлы содержимого удаляются в Master . Как это ограничить? И если это невозможно, то есть ли способ выполнить мое требование иметь отдельную ветку / клон, имеющий только отфильтрованные файлы, т.е. исходные файлы в ней?

Ответы [ 4 ]

5 голосов
/ 11 мая 2009

Очевидный ответ: у вас должно быть отдельное хранилище исходного кода и содержимого . Или просто оставьте содержание.

2 голосов
/ 11 мая 2009

Вы вообще не должны были удалять файлы из ветки Source. Если Source и Master являются только ветвями в одном и том же хранилище, ваши разработчики все равно будут иметь содержимое; нет ничего плохого в том, чтобы он лежал вокруг.

1 голос
/ 11 мая 2009

Используйте git-merge, чтобы объединить две ветви, а затем git-revert, чтобы удалить коммит, который удалил файлы содержимого.

% git checkout Master
% git merge Source
% git revert <content-removal-commit-id>

Или вы можете сделать это наоборот и удалить коммит удаления контента перед Вы сливаетесь с Мастером. Это немного сложнее, но может сделать вашу историю Мастера немного чище.

% git checkout Source
% git branch SourceMerge
% git checkout SourceMerge
% git revert <content-removal-commit-id>
% git checkout Master
% git merge SourceMerge
0 голосов
/ 11 мая 2009

Вы уверены, что хотите включить эти файлы мультимедиа / документацию в свой репозиторий? Хотите отслеживать изменения в медиа-библиотеке объемом 200 ГБ?

Если вы поместите ссылку на их владельца в файл .gitignore, когда вы находитесь в исходной ветке, git будет игнорировать эти файлы, поэтому не будет их трогать / удалять.

http://git -scm.com / Docs / gitignore

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...