Git diff коммитов, введенных в ветке - PullRequest
1 голос
/ 05 апреля 2019

У меня есть разные старые ветки, которые я хочу удалить, но я хочу увидеть коммиты / diff, которые я изначально представил в ветке в то время.

Мне не нужен diff между "master" и "ветвь ", но все объединенные коммиты введены в эту ветвь как один diff.

Возможно ли это?

1 Ответ

1 голос
/ 05 апреля 2019

Если вам нужен 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

(обратите внимание на две точки, чтобы сделать его диапазоном, не путать с указанными выше тремя точками)


Также, для любых оставшихся сомнений, проверьтеполезно документ о ревизиях.

...