Я не могу говорить за Mercurial, но в Git слияния обрабатываются автоматически, за исключением случаев, когда два человека изменяют одно и то же местоположение в одном и том же файле.
Если это происходит, второй человек, который регистрируется, долженобъединить изменения.Файл будет выглядеть примерно так:
<<<<<<<<<<
void SomeMethod()
{
// do something
}
==========
void SomeMethod()
{
// do something else
}
>>>>>>>>>>
Основная идея заключается в том, что вы, как человек, который понимает код, выясните, как объединить изменения в двух разделах, а затем удалите символы маркера,Я могу сделать это, комбинируя два, если это уместно:
void SomeMethod()
{
// do something
// do something else
}
Или я мог бы просто использовать одно, если оно заменяет другое:
void SomeMethod()
{
// do something else
}
Затем я добавляю объединенный файл и заканчиваюкоммит.Или, если я не уверен, что изменения имеют смысл, я могу провести столько испытаний, сколько захочу, до завершения фиксации.
Помимо слияния, вы также можете rebase ,Это меняет природу истории, так что вместо вас и другого человека, делающего одновременные изменения, ваша история ставится после его.Но хотя перебазирование меняет внешний вид истории, это не меняет того факта, что если вы двое изменили одну и ту же часть файла, вам придется объединить изменения вместе.Rebase (и любая другая потенциально возможная операция слияния, такая как применение / вытаскивание тайника или выборка вишни для коммитов) будут вызывать конфликты так же, как описано выше.