Тег sed / grep коммита в git - PullRequest
       26

Тег sed / grep коммита в git

0 голосов
/ 16 октября 2018

Мне нужно grep / sed теги, которые связаны с коммитом в git-репозитории.

Я пробовал с этой командой:

git ls-remote -t <remote-project> | grep -E '<commit-sha>' | sed -e 's,.* -e refs/tags/,,' -e 's/\^{}//'

Но я получаю вот что:

<commit-sha1> refs/tags/<tag1>
<commit-sha1> refs/tags/<tag2>

Я хочу выбрать только tag1 и tag2, чтобы потом разделить их и сохранить в переменных для дальнейшего использования.

Я также пробовал:

git ls-remote -t <remote-project> | grep -E '<commit-id>' | sed -e 's,.* -e refs/tags/,,' -e 's/\^{}//' | cut -f 2

Вывод:

refs/tags/<tag1>
refs/tags/<tag2>

Все еще не то, что я искал, и я не думаю, что это компактный способ сделать это.

Ожидаемый вывод для одного коммита:

tag1
tag2

Редактировать:

git ls-remote -t ssh://somerepo.git 

Эта команда предоставляет мне список коммитов со связанной информацией тега.

Выход:

b63862c999a160add6b7617b3deb40a399aaa0e7    refs/tags/tag1
b63862c999a160add6b7617b3deb40a399aaa0e7    refs/tags/tag2^{}
1a761add5189d037e4b713a000aa650c740f624e    refs/tags/tag3
a8723b64a0d70f7d92ad65d3535ea13a9d6cfc2b    refs/tags/tag4^{}

1 Ответ

0 голосов
/ 16 октября 2018

Попробуйте эту команду

git ls-remote -t ssh://somerepo.git | sed  -n '/b63862c999a160add6b7617b3deb40a399aaa0e7/{s/.*\///p}' 

или

git ls-remote -t ssh://somerepo.git | sed  -rn '/b63862c999a160add6b7617b3deb40a399aaa0e7/{s/.*\/([^^]+).*/\1/p}'

Вывод первой команды:

tag1
tag2^{}

Вывод второй команды:

tag1
tag2
...