2012-09-06 3 views
0

Может быть, его уже спросили, но я не мог найти его здесь.Git Объединенная ветка последней фиксации/коммиттера

У меня есть филиал FEATURE объединены в филиал STABLE и в настоящее время, когда я git show от STABLE я получаю последний коммит, который

commit 265d684b67e66ba762bd438c44e49881f7fd571b 
Merge: 5285837 78d9687 
Author: xxxxx 
Date: Thu Sep 6 18:58:46 2012 -0400 

    Merge branch 'FEATURE' into STABLE 

Не удалось выяснить, как найти, кто в прошлом совершил то, что изменение FEATURE филиал до его объединения до STABLE?

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

Дайте мне знать, если какая-либо дополнительная информация требуется, и любая помощь/предложения будут оценены по достоинству?

+0

У меня возникли некоторые проблемы с пониманием вашей актуальной проблемы. Что именно удерживает вас от просмотра последней фиксации до слияния? Вы спрашиваете, как разбирать соответствующую информацию? – Grizzly

+0

@ Grizzly Точно то, что я ищу, анализ информации. Мало того, что в STABLE объединены только ветви FEATURE, у меня также есть несколько типов филиалов, объединяющих/изменяющих содержимое STABLE. Я пытаюсь получить информацию из предоставленных ответов. Спасибо за ваш ответ. – raksja

ответ

1

Последнее обязательство перед слиянием имеет 78d9687 хэш в вашем случае. Это второе сообщение об ошибке. Так что, если вы знаете, кто это попробовать

$ git show 78d9687 
1

Вы можете использовать относительные фиксации обозначения, чтобы показать фиксации. В вашем примере, поскольку вы объединили функцию FEATURE в STABLE, последняя фиксация на STABLE - HEAD^1 (первый родительский элемент), а последняя фиксация на FEATURE - HEAD^2 (второй родитель).

Так, чтобы показать последние изменения, внесенные ФОКУСЕ, вы должны использовать:

git show HEAD^2 

Чтобы показать один перед этим:

git show HEAD^2~1 

И так далее.

2

Не совсем то, что вы ищете, но для печати всех удаленных филиалов и их последний коммит-х автор, я использовал следующую команду на Bash:

IFS=$'\n' && for branch in $(git branch --all | grep "remotes/origin" | sort); do echo "$(git log --format=format:"%an" ${branch//[[:space:]]/} | head -n 1) - ${branch//[[:space:]]/}"; done | sort && unset IFS

Будьте уверены, чтобы сделать git fetch --all первый чтобы все публичные филиалы отражались в вашем локальном репозитории.

EDIT: с Git 1.9.x (возможно, раньше), выход ветви git изменился, теперь он указывает, что после стрелки («->») печатает локальную ветвь отслеживания. Используйте эту улучшенную версию, которая удаляет ветку TACKING:

IFS=$'\n' && for branch in $(git branch --all | grep "remotes/origin" | sed "s/->.*$//" | sort); do echo "$(git log --format=format:"%an" ${branch//[[:space:]]/} | head -n 1) - ${branch//[[:space:]]/}"; done | sort && unset IFS

Смежные вопросы