Как перечислить непроверенные теги Git

Я хотел бы видеть, какие теги у меня локально недоступны на конкретном пульте. Как я могу это сделать? Я знаю, что могу сделать git push --tags, чтобы подтолкнуть их всех. Однако, если есть теги, которые мне не нужны, я должен убедиться, что я не пропустил некоторые из них?

Ответы

Ответ 1

Вы можете использовать следующие, чтобы увидеть теги, которые существуют локально, но не на указанном пульте:

git show-ref --tags | grep -v -F "$(git ls-remote --tags <remote name> | grep -v '\^{}' | cut -f 2)"

Обратите внимание, что git ls-remote показывает как аннотированный тег, так и фиксацию, на которую он указывает с помощью ^{}, поэтому нам нужно удалить дубликаты.

Альтернативой является использование флагов --dry-run/-n для git push:

git push --tags --dry-run

Это покажет, какие изменения были бы нажаты, но на самом деле не внесет эти изменения.

Ответ 2

Для записи я использую вариант этого с командой "comm":

comm -23 <(git show-ref --tags | cut -d ' ' -f 2) <(git ls-remote --tags origin | cut -f 2)

Я использую его как псевдоним git в .gitconfig, с соответствующим bash, следующим образом:

[alias]
    unpushed-tags = "!bash -c \"comm -23 <(git show-ref --tags | cut -d ' ' -f 2) <(git ls-remote --tags origin | cut -f 2)\""