Я немного новичок в git, в основном полагаюсь на инструменты с графическим интерфейсом, такие как Source Tree, так что поддержите меня, пожалуйста!
В нашем репозитории git есть несколько продуктов, основанных на очень похожей базовой кодовой базе. Мы достигаем этого, имея ветку для каждого продукта. Когда мы впервые начали разработку, мы не установили это как рабочий процесс, поэтому история нашей ветки выглядит примерно так:
master
|
B | C
\ | /
\|/
|
| A
| /
|/
2
|
|
1
|
|
A, B и C — это ответвления, ориентированные на конкретный продукт, причем A — это наш первый продукт для клиента.
Проблема
К сожалению, около точки (1) мы уже работали над A и уже начали коммитить большое количество файлов .png (около 100 МБ), но пока не думали отделять его как отдельный проект. Я пытался удалить эти большие файлы из репозитория в B и C (а также из основной ветки), но, конечно, они все еще находятся в истории коммитов git между точками (1) и (2).
Итак, есть ли способ переписать историю, чтобы ветвь А фактически начиналась с точки 1 и перемещала все файлы, относящиеся к этому продукту, в эту ветвь? К счастью, отфильтровать файлы, связанные с продуктом А, должно быть довольно легко, так как они в основном находятся в отдельном каталоге.
Теоретически основная ветка должна занимать всего около 10 МБ, поскольку она будет в основном состоять из кода, а это означает, что люди могут проверять только определенную ветку продукта и загружать с github только те файлы, которые им действительно нужны.
Спасибо!
Изменить: обратите внимание, это похожий вопрос: git: разделить историю некоторых файлов на отдельную ветку
master
не содержит коммитов png; 2) коммиты png полностью находятся вA
; 3)A
ответвляется от текущей вершиныmaster
или фиксирует2
? - person Christopher   schedule 05.09.2012