개발관련/Git

git 커밋 및 태그를 동시에 푸시하는 방법

Rateye 2021. 11. 30. 09:34
728x90
반응형
질문 : git 커밋 및 태그를 동시에 푸시

git push --tags git push 와 별도의 작업 인 이유를 알고 있습니다. 실수로 태그를 누르는 것을 원하지 않으므로 태그를 누르는 것은 의식적인 선택이어야합니다. 괜찮아. 그러나 두 가지를 함께 밀 수있는 방법이 있습니까? ( git push && git push --tags 제외)

답변

2020년 8월 업데이트

에서 처음 언급 한 바와 같이 의해 답변을 SoBeRich , 내에서 자신의 대답 의로서, 자식 2.4.x에서

git push --atomic origin <branch name> <tag>

(참고 : 이것은 실제로 Git 2.24에서만 HTTPS에서 작동합니다. )

2015년 5월 업데이트

git 2.4.1 부터 다음을 수행 할 수 있습니다.

git config --global push.followTags true

true로 설정하면 기본적으로 --follow-tags 옵션을 활성화합니다.
--no-follow-tags를 지정하여 푸시 할 때이 구성을 재정의 할 수 있습니다.

Wes Hurd에 대한 Matt Rogers의이 스레드 에서 언급했듯이 :

--follow-tags 는 주석이 달린 태그 만 푸시합니다.

git tag -a -m "I'm an annotation" <tagname>

푸시됩니다 ( 여기에서 언급했듯이 푸시되지 않는 경량 태그 인 git tag <tagname> 과는 반대로)

2013년 4월 업데이트

git 1.8.3 (2013 년 4 월 22 일) 이후로 분기를 푸시 한 다음 태그를 푸시하기 위해 더 이상 2 개의 명령을 수행 할 필요가 없습니다 .

새로운 " --follow-tags "옵션은 브랜치를 밀어 낼 때 관련 주석이 달린 태그를 밀어 내도록 git push "에 지시합니다.

이제 새 커밋을 푸시 할 때 시도 할 수 있습니다.

git push --follow-tags

그래도 모든 로컬 태그가 푸시되지는 않지만 git push 되는 커밋에 의해 참조되는 태그 만 푸시됩니다.

Git 2.4.1+ (2015 년 2 분기)에서는 push.followTags . git push "가 분기 내에 태그를 포함하도록 만드는 방법 ?"을 참조하십시오.

2010년 9월 원본 답변

핵 옵션은 git push --mirror 이며 모든 참조를 refs/ 아래에 푸시합니다.

현재 브랜치 커밋으로 하나의 태그 만 푸시 할 수도 있습니다.

git push origin : v1.0.0 

--tags 옵션을 다음과 같은 refspec과 결합 할 수 있습니다.

git push origin --tags :

( --tags 는 명령 줄에 명시 적으로 나열된 refspec 외에도 refs/tags 아래의 모든 참조가 푸시되기 때문에)


또한 " Pushing branch and tags with a single"git push "invocation "항목이 있습니다.

Zoltán Füzesi 가 Git 메일 링리스트 에 간단한 팁을 게시했습니다.

이 문제를 해결하기 위해 .git/config 를 사용합니다.

[remote "origin"]
    url = ...
        fetch = +refs/heads/*:refs/remotes/origin/*
            push = +refs/heads/*
                push = +refs/tags/*
                

이 줄을 추가하면 git push origin 이 모든 분기와 태그를 업로드합니다. 일부만 업로드하려면 열거 할 수 있습니다.

아직 직접 시도하지는 않았지만, 브랜치와 태그를 동시에 푸시하는 다른 방법이 git push에 추가 될 때까지 유용 할 것 같습니다.
반면에 다음과 같이 입력해도 괜찮습니다.

$ git push && git push --tags
                

Aseem Kishore가 언급 한대로 주의하십시오.

push = +refs/heads/*모든 분기를 강제로 푸시합니다 .

지금이게 날 물 었으니 참고로.


René Scheibe다음과 같은 흥미로운 주석을 추가합니다.

--follow-tags .git/refs/tags 아래의 태그 만 고려되므로 오해의 소지가 있습니다.
git gc 가 실행되면 태그가 .git/refs/tags 에서 .git/packed-refs 합니다. 나중에 git push --follow-tags ... 가 더 이상 예상대로 작동하지 않습니다.

출처 : https://stackoverflow.com/questions/3745135/push-git-commits-tags-simultaneously
728x90
반응형