Git поддерево push изменения обратно в проект поддерева
Вкратце ниже: я хочу нажимать сообщения фиксации на поддерево, но только те сообщения, которые относятся к этому дереву. Как это сделать?
У меня есть два проекта: Master
и Slave
. Slave
выставляется как поддерево Master
, выданное на lib/slave
через git subtree merge --prefix=lib/slave --squash projects/slave
, где projects/slave
- ветвь, на которую Slave
выставляется:
Отрасль:
мастер
проекты/подчиненные → подчиненные
Теперь я работаю над ветвью Master
, совершая фиксации файлов, которые являются частью обоих проектов, все идет гладко. Теперь я хочу отменить изменения до Slave
:
- git ведомость проверки
- git merge??? мастер
Если я делаю нормальное слияние, я получаю коммиты для каждой фиксации для овладения, независимо от того, были ли изменены файлы в lib/slave
. Или я могу сделать --squash
и получить только одно коммит, но я теряю сообщения журнала.
Итак, как мне получить соответствующие сообщения журнала? например если моя история журнала Master
:
- добавленные изображения для мастера
- измененные файлы только в подчиненном режиме
- больше изменений только для мастера
- измененные файлы в главном и подчиненном
Я хочу, чтобы это было добавлено к Slave
:
- измененные файлы только в подчиненном режиме
- измененные файлы в главном и подчиненном
Ответы
Ответ 1
Для поведения, которое вы хотите, я думаю, вам нужно нажать из Master
, я не знаю, как вытащить изменения поддерева из Slave
.
Чтобы внести изменения:
(in Master)
$ git subtree split --prefix=lib/slave -b split-branch
$ git push <bare Slave repo> split-branch:master
$ git branch -d split-branch
$ cd /path/to/Slave/working/copy
$ git pull # (now in Slave)
Первая команда создает новое поддерево, основанное на каталоге, которое затем переносится в другой проект.
В теории вы должны иметь возможность напрямую нажать на рабочую копию, но на практике это не сработало для меня.