Общая команда сценариев для работы со ссылками - git for-each-ref
.
Ссылки на ветви живут в refs/heads/
части пространства имен, поэтому используйте git for-each-ref refs/heads
, чтобы получить их все.
По умолчанию git for-each-ref
печатает три элемента: '%(objectname) %(objecttype) %(refname)'
, используйте другой --format
, чтобы изменить это. В этом случае вы, вероятно, захотите:
git for-each-ref --format='%(refname:short)' refs/heads
, но см. документацию для всех доступных директив форматирования. (Обратите внимание также, что git for-each-ref
получил довольно пристальное внимание в git 2.6 и 2.7: --contains
, --merged
, --no-merged
и --points-at
являются новыми. В более старых версиях git первые три доступны только через git branch
.)
Из справочной страницы git-branch :
git branch --contains <commit>
Только ветви списка, которые содержат указанное commit (HEAD, если не указано). Implies
blockquote>--list
.
git branch -r --contains <commit>
Также перечисляет ветви удаленной отслеживания (как указано в user3941992 's answer ниже), то есть «локальные ветви, которые имеют прямую связь с удаленной ветвью».
См. также статью git ready .
Тег
blockquote>--contains
будет выяснять, была ли еще какая-то фиксация в вашей ветке. Возможно, у вас есть фиксация SHA из патча, который, по вашему мнению, вы применили, или вы просто хотите проверить, действительно ли фиксация для вашего любимого проекта с открытым исходным кодом, который уменьшает использование памяти на 75%.$ git log -1 tests commit d590f2ac0635ec0053c4a7377bd929943d475297 Author: Nick Quaranto <nick@quaran.to> Date: Wed Apr 1 20:38:59 2009 -0400 Green all around, finally. $ git branch --contains d590f2 tests * master
Примечание: если фиксация находится на ветке удаленного отслеживания , добавьте параметр
-a
. (как MichielB комментирует ниже )git branch -a --contains <commit>
MatrixFrog комментирует, что он показывает только, какие ветви содержат это точное совершить. Если вы хотите узнать, какие ветви содержат «эквивалентную» фиксацию (т. Е. Какие ветви выбрали вишню, которые совершают), это
git cherry
:Поскольку
blockquote>git cherry
сравнивает набор изменений, а не идентификатор commit (sha1), вы можете использоватьgit cherry
, чтобы узнать, было ли применено локальное коммит<upstream>
под другим идентификатором фиксации. Например, это произойдет, если вы будете кормить патчи<upstream>
по электронной почте, а не напрямую или потянуть за собой.__*__*__*__*__> <upstream> / fork-point \__+__+__-__+__+__-__+__> <head>
(Здесь коммиты отмечены как «
-
» не будет отображаться сgit cherry
, то есть они уже присутствуют в<upstream>
.)
Вы можете запустить:
git log <SHA1>..HEAD --ancestry-path --merges
Из комментария последнего фиксации на выходе вы можете найти имя оригинальной ветки
Пример:
c---e---g--- feature
/ \
-a---b---d---f---h---j--- master
git log e..master --ancestry-path --merges
commit h
Merge: g f
Author: Eugen Konkov <>
Date: Sat Oct 1 00:54:18 2016 +0300
Merge branch 'feature' into master
git log <SHA1>..master --ancestry-path --merges --oneline | tail -n1
, чтобы получить это в одной строке
– James EJ
11 August 2017 в 19:59
git log <SHA1>..master --ancestry-path --merges --oneline -1
– Bartosz
23 March 2018 в 13:03
tests
иmaster
-master
- текущая ветка, поэтому звездочка. – blueyed 25 March 2011 в 14:31git cherry
: «Поскольку git cherry сравнивает набор изменений, а не идентификатор commit (sha1), вы можете использовать git cherry, чтобы узнать, было ли сделанное вами совершение локально применяемый & lt; вверх по течению & gt; под другим идентификатором фиксации. Например, это произойдет, если вы загружаете патчи & lt; upstream & gt; по электронной почте, а не прямое нажатие или вытягивание. kernel.org/pub/software/scm/git/docs/git-cherry.html – MatrixFrog 14 April 2011 в 02:04-a
, чтобы проверить удаленные ветви. – Raman 26 January 2012 в 01:45git tag --contains <commit>
. См. Поиск всех тегов, содержащих коммит? . – Andrew Marshall 18 January 2013 в 19:42git cherry
@UpAndAdam задал вопрос здесь: stackoverflow.com/questions/16304574/… , увы, вопрос еще не ответил. – adeelx 6 August 2014 в 20:24