Как я могу запросить git, чтобы узнать, какие ветви содержат данный коммит? gitk
обычно перечисляет ветви, если их не слишком много, в этом случае просто говорится «многие (38)» или что-то в этом роде. Мне нужно знать полный список или, по крайней мере, содержат ли определенные ветви коммит.
git
version-control
Эндрю Арнотт
источник
источник
Ответы:
Со страницы руководства git-branch :
Списки удаленного отслеживания филиалов , а также (как уже упоминалось в user3941992 «s ответ ниже) , то есть„местные отделения , которые имеют прямое отношение к удаленной ветви“.
Смотрите также эту git готовую статью.
Примечание. Если коммит находится в удаленной ветви отслеживания , добавьте
-a
опцию .(как комментарии MichielB ниже )
MatrixFrog комментирует, что показывает только то, какие ветви содержат этот точный коммит.
Если вы хотите знать, какие ветви содержат «эквивалентный» коммит (то есть, какие ветви имеют вишню, выбранную для этого коммита), то это
git cherry
:(Здесь коммиты отмечены
-
' не будут отображатьсяgit cherry
, то есть они уже присутствуют<upstream>
.)источник
tests
иmaster
-master
текущая ветка, поэтому звездочка.git cherry
: «Поскольку git cherry сравнивает набор изменений, а не идентификатор фиксации (sha1), вы можете использовать git cherry, чтобы выяснить, если сделанный вами локальный коммит был применен <upstream> под другим идентификатором коммита. Например, это произойдет, если вы будете отправлять патчи <upstream> по электронной почте, а не отправлять или извлекать коммиты напрямую. " kernel.org/pub/software/scm/git/docs/git-cherry.html-a
параметр, чтобы также проверить удаленные ветви.git tag --contains <commit>
. См. Поиск всех тегов, содержащих коммит? ,git cherry
части @UpAndAdam задал вопрос здесь: stackoverflow.com/questions/16304574/… Увы, на этот вопрос (пока) не был дан ответ.Вы можете запустить:
Из комментария последнего коммита в выводе вы можете найти оригинальное имя ветки
Пример:
источник
git log <SHA1>..master --ancestry-path --merges --oneline | tail -n1
получал это в одну строкуgit log <SHA1>..master --ancestry-path --merges --oneline -1
A..B
диапазон коммитов, просто не используйте диапазон, например, так ::git log HEAD --oneline -1
>82c12a9 (HEAD, origin/remote-branch-name, origin/master, origin/dev, origin/HEAD, master, dev) commit message
.master
всегда предпочтительнее, если он находится в этом списке , Оттуда это менее ясно. Вы могли бы попытаться прочитать GIT ветвь от .gitmodules файла:git config -f .gitmodules submodule.src/foo/submodule.branch
. Это может быть долго стоящая вилка / пр. Вы можете CD, чтобы репо и запуститьgit config submodule.src/foo/submodule.branch
. Вы также можете использовать текущую ветку git для суперпроектов.git config submodule.src/foo/submodule.branch
может зависеть от любых конфигураций git, включая локальный репозиторий .gitconfig. (требует бегаgit config --local include.path ./path/to/your/.gitconfig
)