Насправді є третя можливість - і, швидше за все, багато інших, оскільки GIT - це скоріше реалізація рамки СКМ, ніж реалізація методології СКМ. Ця третя можливість заснована на rebase.
rebaseСубкоманди GIT приймає серію фіксації ( як правило , від вашої точки розгалуження на кінчик теми гілки topic) і відтворювати їх в іншому місці ( як правило , на кінчику інтеграції галузі, наприклад master). rebaseСубкоманди виробляє нові коммітов, що дає можливість перегрупування фіксацій в формі , яка легше огляд. Це дає нову серію зобов’язань, подібну до тієї, що topicраніше, але з'являється укоріненою у верхній частині галузі інтеграції. Ця нова гілка все ще називається topicGIT, так що стара посилання відкидається. Я неофіційно маркую topic-0початковий стан вашої філії topic-1та ін.
Ось моя пропозиція щодо вашої topicфілії:
(Необов’язковий крок) Ви інтерактивно базуєте свою гілку теми topicна її точці розгалуження (див. --fixupПараметр для commitта опції -iта --autosquashпараметри rebase), що дає можливість переписати свої комісії легшим способом перегляду. Це призводить до галузі topic-1.
Ви перезавантажуєте тематичну галузь у верхній частині своєї інтеграційної гілки, це схоже на злиття, але "не забруднює" історію злиттям, що є лише артефактом програмного забезпечення. Це призводить до галузі topic-2.
Надішліть topic-2товариша по команді, який розглядає його проти кінчика master.
Якщо topic-2це нормально, то з’єднайте його з головним.
ПРИМІТКА Гілки, де гілка посилається на дерево фіксації, всі будуть називатися GIT однаково, таким чином, в кінці процесу, лише гілка topic-2має назву в GIT.
Плюси:
- Немає застарілого коду в огляді.
- Немає помилкових відгуків про «злиття іноземних зразків» (явище, яке ви описали у першій частині).
- Можливість переписати твори чистим способом.
Мінуси:
- Замість однієї галузі
topic-0, є три гілки артефакти topic-0, topic-1і topic-2які створені в фіксації дерева. (Хоча в будь-який час лише одна з них має ім’я в GIT.)
У вашому 1-му сценарії «якби хтось об'єднав щось середнє між« 1. » і "2." »позначається на часовий проміжок між створенням точки розгалуження та часом, коли ви вирішили об'єднатись. У цьому сценарії «якби хтось об'єднав щось середнє між« 1. » і "2." »стосується часу, що перебуває між базою даних і об'єднанням, яке зазвичай дуже коротке. Таким чином, у наданому нами сценарії ви можете «заблокувати» masterгілку на час злиття, не порушуючи істотно робочий процес, хоча в 1-му сценарії це недоцільно.
Якщо ви робите систематичні перегляди коду, напевно, буде гарною ідеєю перегрупувати комісії адекватним чином (необов’язковий крок).
Управління проміжними артефактами гілок представляє лише труднощі, якщо ви поділите їх між сховищами.