Вишневый захват захватывает всю фиксацию и применяет всю фиксацию к вашей текущей ветке. Насколько я понимаю ваш вопрос, вы хотите принять коммиты, которые вносят изменения в несколько каталогов, а вишня выбирает только изменения одного каталога в каждой фиксации в отдельный репозиторий git, который включает только этот каталог.
Поскольку вишневый кирк, как я уже сказал, захватывает все совершение, он не будет работать так, как он сам.
Однако для достижения этой цели необходимо использовать вишневый подборщик вместе с фильтрующей ветвью.
Первое, что нужно сделать, это проверить новую рабочую ветвь в проекте 1, чтобы не испортить ни одну из существующих ветвей. Ваша рабочая ветка будет пылающим крушением, к концу этого, и в этот момент вы можете спокойно избавиться от него; никакого вреда, не фола.
В новой рабочей ветке используйте git filter-branch --tree-filter
, чтобы переписать фиксации, удалив все в дереве, за исключением одного из рассматриваемых каталогов (вам нужно будет начать переписывать родителя коммита/для миграции, а не для фиксации/фиксации).
На этом этапе переписанные коммиты будут касаться только файлов в одном каталоге в проекте 1 (вы также получите все остальные каталоги, полностью сдутые, в вашей рабочей ветке, но кому это интересно). Родительский коммит включает удаление всех других каталогов в рабочей ветке, и все последующие коммиты ограничены изменениями в оставшейся директории. На этом этапе вы сможете черви-забрать эти коммиты в соответствующий репозиторий git для Project 2.
Намочите, промойте и повторите для каждого такого каталога, который вы пытаетесь перенести.
Спасибо Сэм за ваш ответ, я тестирую его, но я никогда не работал с фильтром-веткой git -tree-фильтра, у меня есть пример и скажу ваше решение: - В проекте 1: у меня есть фиксация b0cefe4de84, что вносить изменения в: - Структуры/базы/LockPatternUtils.java - пакеты/приложений/Настройки/security_finger_picker.xml - пакеты/приложения/Mms/SecuritySettings.java - В проекте 2: у меня есть тезисы мерзавец: - (frameworks-base) frameworks/base - (пакеты-приложения-настройки) пакеты/приложения/настройки/ - (пакеты-приложения-Mms) пакеты/приложения/Mms – Optimmus
Ну, теперь у вас есть возможность узнать, как фильтровать ветви , Вы должны найти много информации в документации git и поиске Google. Stackoverflow не является учебным сайтом, даже если это так, для каждого учебника недостаточно 400-символьного комментария. –
Спасибо за ваш ответ, эффективно вы правы, я уже искал более глубокую информацию в git, и я сделал эту командную строку: git filter-branch --tree-filter 'rm -r! (Frameworks/base)' b0cefe4de84^..HEAD , где будет храниться фреймворк/база и удалять остальные файлы в фиксации, но вы хотите, чтобы у меня была ошибка git-filter-branch: 1: eval: Синтаксическая ошибка: «(« неожиданно, во всяком случае, почему вы хотите »запустить перепишите из родителя коммитов/коммитов, которые вы хотите перенести, а не commit/commit). " ? – Optimmus