Узнайте git branch creator



Я хочу узнать, кто создал ветку.



Я вроде бы в состоянии сделать это с:



git branch -a | xargs -L 1 bash -c 'echo " `git log --pretty=format:"%H %an" ^..`"' _


однако это возвращает последний коммиттер для каждой ветви, а не обязательно человека, который создал ветвь.

663   9  

9 ответов:

ветвь - это не что иное, как указатель фиксации. Таким образом, он не отслеживает метаданные, такие как "кто меня создал.- Смотрите сами. Попробуй cat .git/refs/heads/<branch> в вашем репозитории.

это написано, Если вы действительно отслеживаете эту информацию в своем репозитории, проверьте описания ветке. они позволяют прикреплять произвольные метаданные к ветвям, по крайней мере локально.

и ответ Дарвара ниже очень умный способ добраться до этого информация.

список удаленных ветвей Git по автору отсортированный по committerdate:

git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n

Я изменил ответы выше, используя флаг --sort и добавив некоторые цвета/форматирование.

git for-each-ref --format='%(color:cyan)%(authordate:format:%m/%d/%Y %I:%M %p)    %(align:25,left)%(color:yellow)%(authorname)%(end) %(color:reset)%(refname:strip=3)' --sort=authordate refs/remotes

добавление к https://stackoverflow.com/a/19135644/2917986

git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n | awk '{print  }'

P. S. Мы использовать awk, чтобы красиво напечатать автор & удаленного филиала

git for-each-ref --format='%(authorname) %09 -%(refname)' | sort

вы можете узнать, кто создал ветку в свой local хранилище

git reflog --format=full

пример:

commit e1dd940
Reflog: HEAD@{0} (a <a@none>)
Reflog message: checkout: moving from master to b2
Author: b <b.none>
Commit: b <b.none>
(...)

но это, вероятно, бесполезно, как правило, на вашем локальном репозитории только вы создаете ветви.

информация хранится на ./.git / logs / refs / heads/филиала. Пример содержания:

0000000000000000000000000000000000000000 e1dd9409c4ba60c28ad9e7e8a4b4c5ed783ba69b a <a@none> 1438788420 +0200   branch: Created from HEAD

последняя фиксация в этом примере была от пользователя "b", в то время как ветвь" b2 "была создана пользователем"a". Если вы изменение имени пользователя вы можете убедиться, что Git reflog принимает информацию из журнала и не использует локального пользователя.

Я не знаю о какой-либо возможности передать информацию о местных журналов в центральный репозиторий.

предположим:

  1. ветка была сделана из master
  2. не был объединен в master еще

 git log --format="%ae %an" master..<HERE_COMES_BRANCH_NAME> | tail -1

насколько я знаю, вы можете увидеть, если вы являются создателем только ветви. На это указывает первая строка .git/ref/heads / . Если это заканчивается "созданным из головы", вы-творец.

Я знаю, что это не совсем область вопроса, но если вы обнаружите необходимость фильтровать только коммиты определенного автора, вы всегда можете передать grep:)

# lists all commits in chronological order that
# belong to the github account with
# username `MY_GITHUB_USERNAME` (obviously you
# would want to replace that with your github username,
# or the username you are trying to filter by)


git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -committerdate | grep 'MY_GITHUB_USERNAME'

удачи в кодировании! :)

Comments

    Ничего не найдено.