У меня в руках настоящий беспорядок, но я уверен, что найдется хитрость, чтобы это исправить.
У нас был разработчик, который вел отдельную ветку для каждой «версии» программного обеспечения, которая была Ужасно, так как исправление ошибки должно быть выбрано из вишни на каждую ветку. В рассматриваемом репо было 6 параллельных веток.
В действительности в каждой ветке происходили различные исправления ошибок. Так что в каждой отрасли было что-то совершенно другое. Этот разработчик уже ушел, и я хотел бы объединить все ветви обратно в master. Я сделал следующее (для ясности проиллюстрированы две ветви функций):
M0 - M1 - M2 - - - - - - - - - - M3* - M4 - M5 - M6
\ \ / /
\ fB - fB - fB - fB - - - - - - - - - - /
fA - fA - fA - fA - - - - - - - - - - - - -
Это выглядело нормально, но есть одна серьезная проблема. При коммите 'M3 *' каждый файл в хранилище был зафиксирован, так как права доступа к файлу изменились. Никаких функциональных изменений в файлах не произошло. Этот коммит произошел совсем недавно, чем коммиты в ветвях функций, поэтому при слиянии выбирается именно эта версия.
Все вышеперечисленные ошибки были перенесены на пульт.
Я хотел бы объединить все изменения (включая изменения в M2 и M4), но игнорировать изменения в M3 *.
Как я мог go об этом?