Представьте, что вы работаете над секретным проектом мирового господства. В этом заговоре есть три вдохновителя:
- Гений
- Генерал
- Компьютерный хакер
И все они соглашаются прийти на свою секретную базу через 1 неделю, каждый с 1 детальным планом.
Компьютерный хакер, будучи прагматичным программистом, предложил использовать Git для хранения всех файлов планов. Каждый из них разветвляет первоначальное репо проекта, и все они объединятся за одну неделю.
Они все согласны, и в последующие дни история выглядит так:
Гений
Он совершил 70 коммитов по 10 в день.
Общее
Он шпионил за репо их товарищей и разработал стратегию, чтобы победить их. Он сделал 3 коммита весь последний день.
Компьютерный хакер
Этот прагматичный программист использовал ветки. Он сделал 4 разных плана, каждый на ветке. Каждая ветка была перебазирована, чтобы быть только одним коммитом.
Прошло семь дней, и группа снова собралась, чтобы объединить все планы в один шедевр. Все они стремились начать, поэтому все они пытались объединить все вещи самостоятельно.
Вот история:
Гений
Он объединил все изменения из репо генерала, а затем репетитора. А потом, будучи любителем логики, он взглянул на бревно. Он ожидал увидеть логическую эволюцию идеи, когда вещи были построены на предыдущих идеях-коммитах.
Но то, что показывали журналы, представляло собой множество коммитов разных идей, смешанных во временной шкале. Один читатель не мог понять эволюцию, аргументацию коммитов, просто прочитав временную шкалу коммитов.
Так что он закончил с беспорядком, который даже гений не мог понять.
Общее
Общая мысль: Разделяй и властвуй!
И поэтому он слил репо Гения со своим репо. Он посмотрел на бревно и увидел кучу коммитов из идеи Гения, которая следовала за нестабильной прогрессией до последнего дня. В последний день идеи генерала и гения смешались.
Он следил за компьютерным хакером и знал о решении Rebase. Поэтому он сделал ребаз своей собственной идеи и попытался снова объединиться.
Теперь журнал показывал логическую прогрессию каждый день.
Компьютерный хакер
Этот прагматичный программист создал интеграционную ветвь для идеи Genius, другую для общей идеи и другую для своих собственных идей. Он сделал ребаз на каждую ветку. И тогда он слил все в мастера.
И все его товарищи по команде увидели, что его бревно было великолепно. Это было просто. Это было нестабильно с первого взгляда.
Если идея создала проблему, было ясно, в какой коммит был введен, потому что был только один.
Они прекратили завоевывать весь мир и прекратили использовать Subversion.
И все были счастливы.