Я не совсем уверен, что вы подразумеваете под "над моим1 на мой4".Различия всегда попарные (кроме середины слияния);"git diff mine1 mine4" даст вам все изменения между этими двумя деревьями.В приведенном выше примере вы можете получить четыре отдельных патча: mine1-> mine2, mine2-> joes, joes-> mine3, mine3-> mine4.Если бы вы сделали mine1-> mine2, mine2-> mine3, mine3-> mine4, вы бы все равно «увидели» изменения Джо.
Возможно, что вы хотите (как предложил @OleksandrKravchuk) «разница в том, что одинбыло бы, если бы один из них выбрал изменения в mine2, mine3 и mine4 в ветку, которая началась с mine1 ".В этом случае вам придется сделать именно это: создать такую ветвь, выбрать те изменения, которые нужно применить, а затем сгенерировать разность.
Вы можете довольно легко автоматизировать это, создав временную ветку и выполнив командупоследовательность "git cherry-pick" с пропуском коммитов, которые вы хотите пропустить.