2009-11-07 1 views
2

Мне интересно знать, как слияния систем контроля версий.Как слияние работы второй, третий и т. Д. Время слияния файла?

Предположим, у вас есть файл A. На одной ветви, файл А модифицируется - называйте это файл B. В другой ветви, файл А модифицируется - называйте файл C:

B 
/
A 
\ 
    C 

Когда вторая ветвь слито в первой ветви, я понимаю, что 3-полосная выполняется слияние между B, C, и их родительским А. результатом является файл D на первой ветви:

B--D 
/
A 
\ 
    C 

Теперь то, что я не понять, что происходит после другой итерации. D изменяется, становится E и C изменяется, становясь F:

B--D--E 
/
A 
\ 
    C--F 

Если мы хотим сделать одно слияние со второй ветви к первому, какие 3 файлов, участвующих в 3-полосная слияния?

ответ

2

Я приведу конкретный пример использования Git (другие системы управления версиями будут разными). При слиянии В и С вместе, вы получите историю, которая выглядит примерно так:

B---D 
//
A /
\/
    C 

На данный момент, D имеет двух родителей, B и C. После делать больше работы и ввести E и F и делать слияния, вы получите что-то вроде:

B---D--E--G 
// /
A / /
\/ /
    C-----F 

В слиянии, ближайший общий родитель между Е и F является C.

git merge документация имеет больше примеров и описаний, как это работает. Кроме того, статья Git for Computer Scientists содержит больше описаний, примеров и даже лучших изображений (начиная с раздела «История» для обсуждения слияния.)

+0

«ближайший общий родитель» - это классная идея. Благодарю. –

+0

Спасибо за указание моей опечатки. :) –

Смежные вопросы