Chciałbym zobaczyć, które tagi mam lokalnie, które nie są dostępne na konkretnym pilocie. Jak mogę to zrobić? Wiem, że mogę zrobić git push --tags
, aby przeforsować wszystkie. Jeśli jednak są jakieś tagi, których nie chcę popchnąć, jak mogę się upewnić, że niektórych nie przegapiłem?Jak wyświetlić nieumeblowane tagi Git
17
A
Odpowiedz
22
można użyć następujących zobaczyć znaczniki, które istnieją lokalnie, ale nie w określonych pilota:
git show-ref --tags | grep -v -F "$(git ls-remote --tags <remote name> | grep -v '\^{}' | cut -f 2)"
pamiętać, że git ls-remote
wystawach zarówno uwagami znacznik i popełnić to wskazuje ze ^{}
, więc musimy aby usunąć duplikaty.
Alternatywą jest użycie --dry-run
/-n
flagi git push
:
git push --tags --dry-run
To pokaże jakie zmiany zostałyby popychany, ale nie będzie faktycznie wprowadzić te zmiany.
2
Dla przypomnienia, używam wariant to za pomocą polecenia „comm”:
comm -23 <(git show-ref --tags | cut -d ' ' -f 2) <(git ls-remote --tags origin | cut -f 2)
używam go jako aliasu git w .gitconfig z właściwego bash cytowanie tak:
[alias]
unpushed-tags = "!bash -c \"comm -23 <(git show-ref --tags | cut -d ' ' -f 2) <(git ls-remote --tags origin | cut -f 2)\""
Ponieważ używasz wyjścia 'git ls-remote' do odfiltrowania z' show-ref', nie ma wielkiej szkody w pozostawieniu linii '^ {}'. Pozostawia nam to nieco prostsze: 'git show-ref --tags | grep -v -F "$ (git ls-remote --tags origin | cut -f 2)" ' – phinze
To jest dokładnie to samo polecenie, z wyjątkiem' 'zamienionym na' origin'. Użyj tego do skopiowania/wklejenia: 'git show-ref --tags | grep -v -F "$ (git ls-remote --tags origin | grep -v '\^{}' | cut -f 2)" ' –
funroll