Если вам нужен diff или список коммитов "из" ветки, которая уже объединена с вашим master
, например,
A---B---F---G---H---I---J <<< master <<< HEAD
\ /
C---D---E <<< branch-a
Здесь H
- это коммит слияния, а B
коммит branch-a
ответвление от.
Если вы сделаете
git diff master branch-a
, как вы заметили, вы не получите diff для списка коммитов на branch-a
, нодля накопленных изменений, которые произошли после фиксации слияния, что совершенно иное.
Так что вам придется различаться между кончиком branch-a
(E
) и базой слияния между двумя ветвями (B
):
git diff `git merge-base branch-a master` branch-a
... которые, как полезно отмечено jthill ниже , могут быть несколько менее многословными со специальным синтаксис из трех точек , с тем же эффектом:
git diff master...branch-a
И, конечно, вы можете добавить сюда любые опции, которые вам нужны для отображения различий в кодах или списков файлов в нужном вам формате.Может быть, расскажите нам больше в случае конкретного формата.
Но в качестве альтернативы вы также можете получить список коммитов, и его будет не намного сложнее извлечь, вы можете сделать
git log `git merge-base branch-a master`..branch-a
(обратите внимание на две точки, чтобы сделать его диапазоном, не путать с указанными выше тремя точками)
Также, для любых оставшихся сомнений, проверьтеполезно документ о ревизиях.