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)

Первая команда создает новое поддерево, основанное на каталоге, которое затем переносится в другой проект.

В теории вы должны иметь возможность напрямую нажать на рабочую копию, но на практике это не сработало для меня.