Насправді є третя можливість - і, швидше за все, багато інших, оскільки GIT - це скоріше реалізація рамки СКМ, ніж реалізація методології СКМ. Ця третя можливість заснована на rebase
.
rebase
Субкоманди GIT приймає серію фіксації ( як правило , від вашої точки розгалуження на кінчик теми гілки topic
) і відтворювати їх в іншому місці ( як правило , на кінчику інтеграції галузі, наприклад master
). rebase
Субкоманди виробляє нові коммітов, що дає можливість перегрупування фіксацій в формі , яка легше огляд. Це дає нову серію зобов’язань, подібну до тієї, що topic
раніше, але з'являється укоріненою у верхній частині галузі інтеграції. Ця нова гілка все ще називається topic
GIT, так що стара посилання відкидається. Я неофіційно маркую 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-му сценарії це недоцільно.
Якщо ви робите систематичні перегляди коду, напевно, буде гарною ідеєю перегрупувати комісії адекватним чином (необов’язковий крок).
Управління проміжними артефактами гілок представляє лише труднощі, якщо ви поділите їх між сховищами.