Узнайте создателя Git-ветки
Я хочу узнать, кто создал ветку.
Я вроде в состоянии сделать это с:
git branch -a | xargs -L 1 bash -c 'echo "$1 'git log --pretty=format:"%H %an" $1^..$1'"' _
Однако это возвращает последнего коммиттера на ветку, а не обязательно человека, который создал ветку.
Ответы
Ответ 1
Филиал - это не что иное, как указатель фиксации. Таким образом, он не отслеживает метаданные типа "кто создал меня". Посмотреть на себя. Попробуйте cat .git/refs/heads/<branch>
в вашем репозитории.
Это написано, если вы действительно отслеживаете эту информацию в своем репозитории, ознакомьтесь с описаниями ветвей. Они позволяют прикреплять произвольные метаданные к ветвям, локально на мере.
Также ответ DarVar ниже - очень умный способ получить эту информацию.
Ответ 2
Список удаленных веток Git по автору, отсортированный по дате коммиттера:
git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n
Ответ 3
Я подправил предыдущие ответы, используя флаг --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
Ответ 4
Добавление ответа в DarVar:
git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n | awk '{print $7 $8}'
П.С.: Мы использовали AWK для красивой печати автора и удаленной ветки.
Ответ 5
git for-each-ref --format='%(authorname) %09 -%(refname)' | sort
Ответ 6
Вы можете узнать, кто создал ветвь в репозитории локального,
git reflog --format=full
Пример вывода:
commit e1dd940
Reflog: [email protected]{0} (a <[email protected]>)
Reflog message: checkout: moving from master to b2
Author: b <b.none>
Commit: b <b.none>
(...)
Но это, вероятно, бесполезно, как обычно в вашем локальном репозитории, только вы создаете ветки.
Информация хранится в. /.git/logs/refs/heads/branch.
Пример содержимого:
0000000000000000000000000000000000000000 e1dd9409c4ba60c28ad9e7e8a4b4c5ed783ba69b a <[email protected]> 1438788420 +0200 branch: Created from HEAD
Последняя фиксация в этом примере была от пользователя "b", а ветвь "b2" была создана пользователем "a". Если вы измените свое имя пользователя, вы можете убедиться, что git reflog берет информацию из журнала и не использует локального пользователя.
Я не знаю о возможности передачи этой информации локального журнала в центральный репозиторий.
Ответ 7
Предполагая, что:
- ветка была сделана из
master
- еще не был объединен с
master
git log --format="%ae %an" master..<HERE_COMES_THE_BRANCH_NAME> | tail -1
Ответ 8
ПРИМЕЧАНИЕ. Это может быть частичным ответом для вас.
Для нас это был полный ответ.
Нам нужно, чтобы все ветки и их владельцы удаляли, так как нас было всего 10 человек, но там было еще 200 существующих веток. Это видно из:
https://my-github-domain-name.com/my-git-organization-name/my-git-repo-name/ ветки/активные
Я использовал команду ниже, находясь в локальном каталоге репозитория git:
git branch --list -a > branch-list.txt
Затем все ветки попадают в файл branch-list.txt.
Поскольку мы ввели имена в именах ветвей git, мы уже выполнили.
Ответ 9
Я знаю, что это не совсем предмет вопроса, но если вы обнаружите необходимость фильтровать только коммиты по конкретному автору, вы всегда можете обратиться к 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'
Удачного кодирования! :)
Ответ 10
для тех, кто ищет DESC... это похоже на работу --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
далее ссылка: fooobar.com/questions/12307/...
Ответ 11
Насколько я знаю, вы можете видеть, является ли вы создателем ветки. Это указывается первой строкой в .git/ref/heads/<branch> . Если он заканчивается на "Создано из HEAD", вы являетесь создателем.