Возврат коммита git merge, затем возврат возврата
Наша команда использует Github Pull Requests для управления нашим рабочим процессом, очень похожим на то, что описано здесь. После проверки принятого запроса на извлечение вручную нам иногда необходимо отменить это объединение, поскольку оно не готово к развертыванию на наших производственных серверах.
Однако, если разработчик попытается снова выполнить запрос на извлечение, он не распознает, что эти изменения были отменены, и увидит, что коммиты уже находятся в основной ветке. Это будет включать в себя только их недавние коммиты с момента возврата, но мы действительно хотим, чтобы вновь ввести ВСЕ коммиты, которые были возвращены, плюс их новая работа. Другими словами, нам нравится способ переиздания первоначального запроса на извлечение.
Поскольку Github не поддерживает эту функцию (т. Е. Не отменяет слияние и не отменяет / не перевыпускает исходный запрос на извлечение), в настоящее время я возвращаю отмененное слияние. Это неправильно.
Какие еще способы я могу использовать для достижения той же цели в git? (или Github, если это возможно)
3 ответа
Я думаю, что ваша проблема здесь возникает, потому что, когда вы имеете дело с запросами на получение, вы выбираете автоматическое объединение их на GitHub. Из трех предложенных способов обработки запросов извлечения, описанных в документации, вы используете последний ("Автослияние"), который был реализован только недавно. Лично я думаю, что это подходит только для тривиальных запросов, которые, очевидно, верны. Для чего-то более сложного, я хотел бы использовать первый подход, т.е.
- добавление репозитория запрашивающей стороны в качестве нового удаленного
- выбирая из этого пульта
- пробуя слияние
- тестирование тщательно
- подталкивая результат, если вы счастливы
Это означает, что объединенная версия становится общедоступной только после того, как вы ее протестировали и решили выдвинуть. Если вы не хотите, вы можете просто сбросить вашу основную ветвь на прежнюю позицию.
Интересно, что, возможно, стоит подробнее рассказать о том, что произойдет, если вам в конечном итоге придется отменить достойное сожаления слияние, но при этом все еще хотите иметь возможность повторно объединить более позднюю версию этой ветви. Хотя это может показаться неправильным, насколько я понимаю, самый простой способ справиться с этой ситуацией - это действительно вернуть назад. Вы можете найти более подробное обсуждение этой проблемы в этом посте из блога Pro Git и другое обсуждение той же проблемы в Linux Torvalds, которое также может оказаться полезным.
Я бы посоветовал вам, ребята, придерживаться другого подхода. Ваш рабочий процесс возврата и возврата назад кажется мне очень запутанным. Фактическая проблема, которую вы пытаетесь решить, может решаться по-разному.
Я предлагаю вам изменить ваш рабочий процесс, чтобы использовать две ветви. Одна стабильная ветка (master
) и одна ветка разработки (develop
). Вся работа идет в develop
ветка, или в отдельную тему ветки. Запросы на извлечение всегда подаются против develop
филиал, затем слился в develop
когда одобрено.
master
изначально разветвленный develop
, Как только develop
находится в стабильном состоянии, вы сливаете его в master
, master
текущая стабильная версия
Это свободно основано на "Успешной модели ветвления Git" от nvie.
Если у вас есть полк ветвлений на функции, вы можете перестроить кандидата на выпуск с теми функциями, которые вам нравятся. Вам не нужно будет "отменять слияние":
дальнейшее чтение: https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR
Пожалуйста, смотрите комментарии для дополнительной информации. Это работает очень хорошо для нас.