Есть ли способ определить, когда была создана ветка Git? У меня есть филиал в моем репо, и я не помню, как его создавал, и подумал, что, возможно, просмотр временной метки сотрясет мою память.
git
branch
git-branch
paxos1977
источник
источник
Ответы:
использование
Если вы хотите увидеть это в контексте, используя gitk, то используйте
(где foo - название ветви, которую вы ищете.)
источник
Как указано в комментариях и ответе Джекуба , если ваша ветвь моложе числа дней, установленного в настройке конфигурации
gc.reflogexpire
(по умолчанию 90 дней), вы можете использовать свой журнал регистрации, чтобы узнать, когда ссылка на ветку была впервые создан.Обратите внимание, что
git reflog
может принимать большинствоgit log
флагов. Также отметим, чтоHEAD@{0}
селекторы стиля - это, по сути, понятия времени и, фактически, они обрабатываются (взломанным способом) как строки даты. Это означает, что вы можете использовать флаг--date=local
и получать вывод следующим образом:Иногда может быть полезно использовать
--date=relative
:Последнее замечание:
--all
флаг (который на самом деле является флагом git-log, понятным для git-reflog) покажет reflogs для всех известных ссылок вrefs/
(а не простоHEAD
), которые ясно покажут вам события ветвления:источник
gc.reflogexpire
нескольких дней.Pro Git § 3.1 Git ветвление - что такое ветвь, имеет хорошее объяснение того, что на самом деле представляет собой git ветвь
Поскольку ветвь является просто легким указателем, git не имеет явного представления о своей истории или дате создания. «Но держись, - слышу ты, говоришь, - конечно, мерзавец знает историю моей ветки!» Ну вроде.
Если вы выполните одно из следующих действий:
вы увидите то, что выглядит как «история вашей ветви», но на самом деле это список коммитов, доступных из «ветви», которые недоступны из master. Это дает вам информацию, которую вы хотите, но тогда и только тогда, когда вы никогда не сливали «ветку» обратно в мастер и никогда не объединяли мастер в «ветку» с момента ее создания. Если вы уже объединены, то эта история разногласий разрушится.
К счастью, рефлог часто содержит информацию, которую вы хотите, как объяснено в различных других ответах здесь. Использовать это:
показать историю отрасли. Последняя запись в этом списке (вероятно) - это точка, в которой вы создали ветку.
Если ветвь была удалена, то ветвь больше не является допустимым идентификатором git, но вы можете использовать это вместо этого, что может найти то, что вы хотите:
Или в оболочке Windows cmd:
Обратите внимание, что reflog не будет эффективно работать на удаленных ветвях, только на тех, с которыми вы работали локально.
источник
gc.reflogexpire
нескольких дней, как указано в этом ответе и этом ответе .git reflog --date=local <branch>
Во-первых, если ваша ветка была создана в течение
gc.reflogexpire
нескольких дней (по умолчанию 90 дней, то есть около 3 месяцев), вы можете использоватьgit log -g <branch>
илиgit reflog show <branch>
найти первую запись в reflog, которая будет событием создания, и выглядит примерно так: (дляgit log -g
):Вы бы узнали, кто создал ветку, сколько операций назад и из какой ветви (ну, это может быть просто «Создано из HEAD», что мало помогает).
Это то, что MikeSep сказал в своем ответе .
Во-вторых, если у вас есть ветвь дольше чем
gc.reflogexpire
и вы запустилиgit gc
(или он был запущен автоматически), вам нужно будет найти общего предка с веткой, из которой он был создан. Взгляните на конфигурационный файл, возможно, естьbranch.<branchname>.merge
запись, которая скажет вам, на какой ветке он основанЕсли вы знаете, что рассматриваемая ветка была создана, например, из главной ветви (разветвление из главной ветви), вы можете использовать следующую команду, чтобы увидеть общего предка:
Вы также можете попробовать
git show-branch <branch> master
, как альтернативу.Вот что сказал Гбэкон в своем ответе .
источник
Я не уверен в команде git для этого, но я думаю, что вы можете найти их в reflogs.
У моих файлов есть метка времени Unix.
Обновление: при печати журналов появляется возможность использовать историю рефлогов вместо истории фиксации:
Вы также можете следить за этим журналом, когда вы создали ветку.
git log
показывает дату фиксации, а не дату, когда вы сделали действие, которое сделало запись в reflog. Я еще не нашел этого, за исключением того, что посмотрел фактический рефлог в пути выше.источник
Попробуй это
источник
%
раньше(refname)
| cut -c 5- | sort -r |
а затем пролистал grep за месяц, предоставив мне список в обратном хронологическом порядке, более или менее.--sort='-committerdate'
(обратите внимание на '-' перед committerdate для обратного хронологического порядка).Использование:
показать весь жизненный цикл вашего хранилища в текущей папке. Имя первой ветви (снизу вверх) - это созданный источник.
Это значит:
Создание ветки создано (оформить заказ -b) из мастера
Ветка feature-jira35 создана (оформить заказ -b) из разработки
Ветвь feature-jira-sut-46 создана (извлечение -b) из разработки
источник
Это то, что я придумал, прежде чем я нашел эту тему.
источник
Эта команда показывает дату создания ветки
dev
отmain
источник
Если вы хотите получить детали для всех филиалов
источник
Я нашел лучший способ: я всегда проверяю последнюю ветку, созданную таким образом
источник
В сочетании с ответом Эндрю Сона ( https://stackoverflow.com/a/14265207/1929406 )
источник
Это сделало это для меня: (10 лет спустя)
Так как нет хранимой информации о времени создания ветки, то, что это делает, отображает первую фиксацию каждой ветки (
--no-walk
), которая включает дату фиксации. Используйте--remotes
для удаленных филиалов или опустите его для локальных филиалов.Поскольку я делаю по крайней мере один коммит в ветке перед созданием другого, это позволило мне отследить несколько месяцев создания веток (и функции dev-start) для целей документирования.
источник: AnoE на stackexchange
источник
синтаксис:
git reflog --date=local | grep checkout: | grep ${current_branch} | tail -1
пример:
git reflog --date=local | grep checkout: | grep dev-2.19.0 | tail -1
результат:
cc7a3a8ec HEAD@{Wed Apr 29 14:58:50 2020}: checkout: moving from dev-2.18.0 to dev-2.19.0
источник