2013-04-04 2 views
34

В настоящее время я занят проектом с большим количеством ветвей, и у меня есть тег для последних изменений, который был сделан на одной из ветвей. Но мне непонятно, на какой ветке этот тег.Git: Как узнать, на каком теге ветки?

Как узнать, на каком теге ветки?

ответ

47

Еще короче:

git branch --contains tags/<tag> 

(он работает для любого дерева-иш ссылки)


Если вы можете найти which commit a tag refers to:

git rev-parse --verify tags/<tag>^{commit} 
# or, shorter: 
git rev-parse tags/<tag>~0 

Тогда вы можете найти which branch contain that commit.

git branch --contains <commit> 

Как commented ниже по user3356885, для принесенных ветвей (ветви в пультах имен)

git branch -a --contains tags/<tag> 
git branch -a --contains <commit> 
+6

В моей версии Git, 1.7.1, я могу просто сделать git branch --contains '. –

+0

@DanMoulding true, я отредактировал ответ, чтобы отразить это. Сначала мне было интересно найти фиксацию, прикрепленную к тегу. – VonC

+2

Поиск тега, который был создан на удаленной ветке, в этом случае не даст никаких результатов. Другими словами, для ветвей, которые не существуют локально, результатов не будет. Для этого нужно использовать опцию * -a *. 'git branch -a - содержит '. То же самое будет работать для фиксации. – user3356885

0

С тегом вы отмечаете ссылку. Поэтому, когда вы находитесь в ветви dev и отмечаете это состояние. Ваш тег находится на фактической ссылке. Таким образом, в этом случае вы можете посмотреть на gitk или другой инструмент, где показано дерево. Там вы можете увидеть, на какой ссылке есть тег.

git: Is there something like per-branch tags?
http://git-scm.com/book/en/Git-Basics-Tagging

Вот хорошее объяснение.

0

В отношении @ VonC Комментарий о поиске коммит ссылаются тегом, просто использовать :

git show <tag> 

Поскольку тег привязан к конкретному фиксации, он может быть используется для отображения этой фиксации, которая даст вам полную информацию о фиксации.

3
git branch --contains tag 

ничего не делает для меня, но я нашел решение этой проблемы в мерзавца гуй.

Начните так:

git gui 

(. На моей Ubuntu я должен был установить его первым с sudo apt-get install git-gui)

Затем я выбрал пункт меню Repository -> Визуализация всех филиалов История. В появившемся окне я выбрал пункт меню Файл -> Список ссылок.

Появилось еще одно окно, в котором перечислены все мои теги (и другие ссылки). Они доступны для кликов, и после нажатия одной из них мне просто нужно было проверить нижний левый фрейм для списка ветвей.Как это:

Parent: somesha (message) 
Parent: someothersha (another message) 
Child: anothersha (yet another message) 
Branches: branch1, master, remotes/origin/branch2, remotes/upstream/branch1, etc 
Follows: v1.1.2 
Precedes: v1.1.4 
+0

Введите «gitk» из bash, а затем File -> Список литературы ... – ConfusedDeer

6

Если «мерзавец филиал --contains» не делает ничего, убедитесь, что вы включая все ветви, как локальных и удаленных филиалов:

git branch -a --contains <tag> 

С мерзавца помощью:

Конкретные действия ГИТ-ветви: -a, --all список и удаленного слежения и местные филиалы

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