Ну, если это действительно то, что вы хотите сделать, самое простое решение будет выглядеть примерно так:
Проверьте вашу ветку.
git checkout feature
Скопируйте module1 и module2 в module3и module4 (соответственно).
cp module1 module3
cp module2 module4
Затем выполните одно из двух действий:
Предполагая, что изменения в этих модулях - это все, что вы сделали на feature
, вы можете вернуть индекс обратнок тому, что на master
.
git revert -n $(git merge-base feature master)..HEAD
git add .
git revert --continue
Или другой подход, который будет работать, даже если вы изменили другие файлы, которые вы не хотите возвращать
git reset $(git merge-base feature master) -- module1 module2
git add .
git commit
Сейчас ... либоиз них должны работать, предполагая, что изменения действительно локализованы в соответствующих файлах (и если нет, то я подозреваю, что «старые» и «новые» модули могут просто не сосуществовать в одном и том же дереве).
Но мои два цента, похоже, вы пытаетесь использовать инструмент управления исходным кодом для решения проблемы развертывания, и в долгосрочной перспективе это может быть не очень хорошей идеей.Хотите ли вы поддерживать это самостоятельно в будущем?Вы хотите иметь дело с возможными изменениями в module1
(старый код module1)?В противном случае это может вызвать больше проблем, чем решить (особенно если необходимость одновременного развертывания является временной).