Здається, у вас тут є кілька проблем:
1. Визначення особливостей конкретного випуску
Це і питання управління проектами, і питання координації. Чи буде випущена ця функція раніше, одночасно або після цієї іншої функції? Якщо випуски хочуть відбуватися по одній особливості, то визначте це. Якщо функції будуть згруповані у випуски, то з’ясуйте, що таке угрупування, та застосуйте це разом із розробниками та особами, які приймають рішення. Використовуйте систему відстеження або випуску квитків для тегування випусків. Дайте зрозуміти, що якщо одна особливість конкретного випуску - це неможливість, то всі вони є.
2. Стратегії розгалуження
Git-flow - це проста відповідь на такі питання, і часто люди використовують варіант git-flow, навіть якщо вони не знають, що це таке. Я не збираюся говорити, що це загальна для всіх проблем, але вона дуже допомагає.
Це здається, що ви стикаєтеся з проблемою з недетермінованими стратегіями випуску, де функції затверджені розстрілом, а щось, що було розпочато розробкою дуже давно, може бути випущене після чогось, що почалося зовсім недавно - функцій стриб-жаби.
Довговічні гілки функцій або гілки з одночасним випуском, мабуть, найкраща відповідь на подібні проблеми. Об’єднайте (або перезавантажте, якщо вам це зручно) останній від майстра у свої довго працюючі гілки. Будьте обережні, щоб об’єднати лише ті функції, які вже є активними, інакше ви зіткнетеся з проблемами, які у вас виникли зараз (занадто багато змішаних функцій на одній гілці).
Гілки "виправлення" або "виправлення" є невід'ємною частиною цього процесу; використовувати їх для невеликих одноразових виправлень, які мають короткий цикл QA.
З вашого опису, може бути навіть краще не підтримувати офіційну галузь «розвитку». Швидше, гілка всіх функцій від головного, і створити об'єднані гілки випуску, коли випуск буде визначений.
3. Середовища
Не порівнюйте гілки git з вашим середовищем, за винятком виробництва == master. Галузь «розвитку» слід вважати розбитим. Гілки випуску висуваються до тестових середовищ, чи це середовище якості якості, чи середовище постановки. Якщо вам потрібно, висуньте певну галузь функції до середовища.
Якщо у вас є більше однієї гілки функцій, яку потрібно випустити окремо, але тестувати одночасно ..... ¯ \ _ (ツ) _ / ¯ .... спініруйте інший сервер? Можливо, об’єднайте їх разом у гілку, що викидає ... вчинити виправлення / зміни вихідних гілок та знову об'єднатись у гілку, що викидає; остаточне затвердження та UAT на окремих відділеннях випуску.
4. Видалення не затверджених функцій із гілки
Саме цього намагаються уникнути вищезазначені думки, адже це, без сумніву, найболючіше спробувати. Якщо вам пощастило, функції були об’єднані у вашу розробку чи випробування гілок атомним шляхом за допомогою об'єднань. Якщо вам не пощастило, розробники взяли участь безпосередньо в галузі розвитку / тестування.
У будь-якому випадку, якщо ви готуєтесь до випуску та не підтвердили зміни, вам потрібно буде використовувати Git, щоб відмовитись від неприйнятих комісій із гілки випуску; найкраща ідея - це зробити перед тестуванням випуску.
Удачі.