Как перечислить непроверенные теги 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)\""