Подразумевается внесение небольших по объёму изменений в большой и активно развивающийся чужой проект и последующее поддержание этих изменений.
Решение, которое первым приходит на ум - использовать возможности гита. Однако, если изменения не совсем тривиальны, при слиянии веток что-то может пойти не так. Помимо конфликтов, иногда бывает и так, что какие-то изменения из форка переписываются новым кодом из базового проекта, в результате чего изменение пропадает.
Видимо, нужен какой-то альтернативный ассиметричный 3-сторонний сливатель (3-way merge tool). Он, во-первых, должен понимать смысл каждой из сторон - вот это апстрим, вот это наши изменения. Не знаю, почему и не уверен, что не вру, но интуитивно есть такое ощущение.
Вероятно, он должен также вести учёт того, какое решение было принято при разрешении конфликта. Так мы сможем отследить, где мы могли потерять часть своих изменений.
Есть ли что-то такое в природе?