개발관련/Git

더 이상 원격 저장소에 없는 로컬 git 태그 제거 하는 방법

Rateye 2022. 1. 17. 11:57
728x90
반응형
질문 : 더 이상 원격 저장소에없는 로컬 git 태그 제거

배포 프로세스의 일부로 git에서 태그를 사용합니다. 때때로 우리는 원격 저장소에서 태그를 제거하여 이러한 태그를 정리하려고합니다.

이것은 매우 간단합니다. 한 사용자가 한 세트의 명령에서 로컬 태그와 원격 태그를 삭제합니다. 두 단계를 결합한 작은 쉘 스크립트가 있습니다.

이제 두 번째 (세 번째, 네 번째, ...) 사용자는 더 이상 리모컨에 반영되지 않는 로컬 태그를 갖게됩니다.

원격 분기가 삭제 된 로컬 추적 분기를 정리하는 git remote prune origin 과 유사한 명령을 찾고 있습니다.

또는 원격 태그를 나열하는 간단한 명령을 사용하여 git tag -l 통해 반환 된 로컬 태그와 비교할 수 있습니다.

답변

좋은 질문. :) 완전한 답이 없습니다 ...

git ls-remote 를 통해 원격 태그 목록을 얻을 수 있습니다. origin 에서 참조하는 저장소의 태그를 나열하려면 다음을 실행합니다.

git ls-remote --tags origin

그러면 다음과 같은 해시 및 친숙한 태그 이름 목록이 반환됩니다.

94bf6de8315d9a7b22385e86e1f5add9183bcb3c        refs/tags/v0.1.3
cc047da6604bdd9a0e5ecbba3375ba6f09eed09d        refs/tags/v0.1.4
...
2f2e45bedf67dedb8d1dc0d02612345ee5c893f2        refs/tags/v0.5.4

이 목록에 의해 생성 된 태그를 로컬에있는 태그와 비교하기 위해 bash 스크립트를 확실히 조합 할 수 있습니다. git ls-remote 와 동일한 형식으로 태그 이름을 생성하는 git show-ref --tags 살펴보십시오.

제쳐두고 git show-ref 에는 원하는 것과 반대되는 옵션이 있습니다. 다음 명령은 로컬에 없는 원격 분기의 모든 태그를 나열합니다.

git ls-remote --tags origin | git show-ref --tags --exclude-existing
출처 : https://stackoverflow.com/questions/1841341/remove-local-git-tags-that-are-no-longer-on-the-remote-repository
728x90
반응형