2016-10-17 3 views
0
git for-each-ref --sort=committerdate refs/heads/ --format='%(committerdate:short) %(refname:short)' 

Вышеупомянутая команда печатает ветви, отсортированные по дате последнего фиксации. Но как сортировать по дате первой фиксации? (то есть, когда была создана ветка).Список ветвей, отсортированных по дате создания

+2

мерзавец ветвь не отслеживает дату, когда он будет создан, хотя местный reflog может иметь запись о его создании. Reflogs не толкаются или не клонируются, поэтому они не могут использоваться совместно с командами git. – ElpieKay

+0

@ElpieKay любым способом для итерации дерева с использованием Python или другого языка и определения того, где и когда ветвь разделена от мастера? – exebook

+1

Филиалы не обязательно означают, что было задействовано любое разделение. Вы должны [прочитать книгу Git] (https://git-scm.com/book/en/v2), чтобы понять, какие ветви на самом деле и как работает история. Вы могли бы пройти через чтение истории, чтобы слить обратно, чтобы распознать фактические ветви дерева в истории, но это не даст вам способ присоединить к нему (ветвь) имя просто из-за того, как работают ветви. – poke

ответ

2

Это невозможно, потому что Git не записывает дату/время, когда была создана ветка. «Reflog» - это только локальная опция «спасти» эту информацию, но она записывает только, когда концы ветвей обновлялись в локальном репозитории, она не различает, если ветвь была создана в тот момент, если она уже существует.

+1

Если вам нужна эта информация, вы, вероятно, можете написать псевдоним, чтобы пометить точку ветвления одновременно с ветвлением - тогда у вас будет запись о том, когда ветка была «создана». Это не поможет вам, если несколько человек создадут локальные ветви с тем же именем и затем объединить их вместе. – Useless

1

Как указано выше, невозможно узнать дату создания ветки в Git.

@ElpieKay любым способом для итерации дерева с использованием Python или другого языка и определения того, где и когда ветвь разделена от мастера?

Это, однако, достижимо с git-merge-base. Далее будет печатать sha1 для фиксации, который является общим предком master и branch:

git merge-base branch master 
+0

'git merge-base' находит последнего общего предка. Конец, на котором создается новая ветка, не всегда является последним. – ElpieKay

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