2014-10-06 2 views
4

원본을 내 로컬 태그와 일치시키고 싶습니다. 로컬 태그를 제거하는 것과 혼동하지 말고 대신 원격 태그를 사용하십시오. 로컬 저장소에없는 원격 태그를 제거하는 방법은 무엇입니까?

지역 태그를 치기와 내가 내 로컬 저장소 일치 기원 만들려면 :
git tag -l | xargs git tag -d 
git fetch 

내가 로컬 태그를 청소를하고 난 밀고 접속 원격에없는 것을 제거하고 싶습니다.

git tag -l | grep -v "[^v2]" | xargs git tag -d # remove local tags that don't match a pattern 
git push origin :refs/tags/2.2.15  # manually remove those tags on remote 
git push origin :refs/tags/2.2.16 
git push origin :refs/tags/2.2.17 
git push origin :refs/tags/2.2.18 
... 

하지만이 같은 느낌이 많은 태그로 다르게 할 수있다 :

내가 좋아하는 수동으로하고있다. 그런 다음 로컬 저장소가없는 태그를 원격 저장소에서 제거하는 방법에 대한 질문은 무엇입니까?

+1

[this] (http://blog.siyelo.com/how-to-bulk-delete-remote-git-tags/)가 도움이됩니까? – Travis

+1

Yeap, 나는 그렇게 생각한다 ... git ls-remote --tags origin | awk '/^(.*)(\s+)(.*[a-z])$/ {print ":"$ 2}'| xargs git push origin – mimoralea

+0

'자식 - 원격 - 태그 원산지 | grep -v "[{} $]"| awk '{print ":"$ 2} " 삭제를 테스트 할 수 없었지만 그 명령은 매우 유망한 출력을 보여줍니다 ... – mimoralea

답변

1

원격 리포에서 테스트 한 결과 제대로 작동합니다.

내가 grep 대신 cut을 사용하고 원격 태그를 로컬 태그와 비교 한 다음 다른 원격 태그를 제거했습니다.

git ls-remote --tags origin | cut -f 2 | xargs basename | comm -23 - <(git tag) | awk '{print ":refs/tags/" $0}' | xargs git push origin 

세계에서 가장 우아한 것은 아니지만 작동합니다.

+0

굉장히, 나는 이것을 다시 참조해야합니다. 필요해. 감사! – mimoralea

관련 문제