자식 커밋 및 태그를 동시에 푸시


387

나는 git push --tagsold와 별도의 작업 인 이유를 알고 git push있습니다. 실수로 태그를 푸시하지 않기 때문에 푸시 태그는 의식적인 선택이어야합니다. 괜찮아. 그러나 둘 다 함께 밀어 넣는 방법이 있습니까? (에서 제외 git push && git push --tags)


4
무슨 문제있어 git push && git push --tags?
fuz

21
특히 연결이 두 번 설정되어야하기 때문에 속도가 느립니다.
Will Robertson

16
아래의 업데이트 된 답변을 참조하십시오 : --follow-tagsgit 1.8.3 이후 새로운 옵션이 있습니다
VonC

24
이러한 작업을 별도로 수행하지 않는 또 다른 이유는 같은 종류의 자동화가있을 때 동일한 커밋에 대해 두 개의 CI 빌드를 트리거하지 않기 때문입니다.
Alex R

또한 --tags가벼운 태그와 주석이 달린 태그 소스를
karlsebal

답변:


555

2015 년 5 월 업데이트

현재 자식 2.4.1 을 수행 할 수 있습니다

git config --global push.followTags true

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

이 스레드에서 Matt Rogers가 Wes Hurd에 대답 한 것처럼 :

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

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

푸시 될 것입니다 ( 여기서 언급 한git tag <tagname> 것처럼 푸시되지 않는 경량 태그 )

2013 년 4 월 업데이트

때문에 자식 1.8.3 (4 월 22D, 2013) , 더 이상 태그를 밀어 다음 지점을 밀어하고이 명령을 수행 할 필요가 없습니다 :

새로운 " --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옵션을 다음과 같은 참조 스펙과 결합 할 수 있습니다 .

git push origin --tags :

(왜냐하면 --tags: 명령 줄에 명시 적으로 나열된 참조 사양 외에 모든 참조 refs/tags가 푸시 됨 )


" 단일"git push "호출로 ​​분기 및 태그 푸시 "

간단한 팁이 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

주의 로, 주석 에 의해 아심 키 쇼어

push = +refs/heads/*모든 지점강제로 제거합니다 .

이것은 지금 막 조금, 그래서 참고.


René Scheibe이 흥미로운 의견을 추가 합니다 .

--follow-tags매개 변수는 아래의 태그 만으로 오해의 소지 .git/refs/tags간주됩니다.
경우 git gc실행, 태그에서 이동 .git/refs/tags.git/packed-refs. 나중에 git push --follow-tags ...더 이상 예상대로 작동하지 않습니다.


3
링크 된 게시물에 대한 하나의 주석은 push = +refs/heads/*모든 분기를 강제로 푸시 한다는 것을 올바르게 지적합니다 . 이것은 지금 막 조금, 그래서 참고.
Aseem Kishore

2
Re : --follow-tagsgit 1.8.3에 추가 된 플래그입니다 .git 설치를 기본값으로 구성 할 수 있습니까?
Trevor Burnham

1
어떤 @TrevorBurnham,의 값 push.default( git-scm.com/docs/git-config을 ) 추진에 대한 기본 작업을 정의 할 수 있습니다 ( nothing, matching, upstream, simple에서와 같이 stackoverflow.com/a/10002469/6309 ). --follow-tag명시 적 으로 추가해야합니다 .
VonC 2016 년

1
@VonC 태그를 강제로 푸시하려면 어떻게합니까? git push --follow-tags -f나를 위해 일하지 않았다.
mauryat

1
--follow-tags매개 변수는 아래의 태그 만으로 오해의 소지 .git/refs/tags간주됩니다. 경우 git gc실행, 태그에서 이동 .git/refs/tags.git/packed-refs. 나중에 git push --follow-tags ...더 이상 예상대로 작동하지 않습니다.
르네 셰이 베

4

어쩌면 이것은 누군가를 도울 수 있습니다.

 1. git commit -a -m "msg"  
 2. git tag 0.1.0                // creates a new tag locally     
 3. git push origin tag 0.1.0    // pushes the tag & the code in the remote repo          

나는 자식-2.21.0.windows.1와 솔루션을 시도하고 3 만 태그 밀어 발견
더스틴 일

내 끝에서 잘 작동합니다. 세 가지 명령을 모두 순서대로 시도하고 원격 저장소가 설정되어 있습니까 (git remote -v)?
Rajesh Gupta 19 :

1 단계에서 "git commit -m"msg "를 사용했는데 -a 매개 변수가 없습니다. 이유가 될 수 있습니다. 후속 조치에 감사드립니다!
Dustin Sun

2

@since Git 2.4

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


0

힘내 GUI

힘내 GUI에는 PUSH 버튼이 있습니다.

태그없이 명령 줄에서 분기를 밀고 다음을 사용하여 분기를 다시 시도했습니다. --follow-tags 위 옵션을 . 이 옵션은 다음과 같은 주석이 달린 태그로 설명됩니다. 내 태그는 간단한 태그였습니다.

나는 무언가를 고치고 수정 사항으로 커밋에 태그를 붙인 다음 (동료가 수정 프로그램을 선택할 수 있음) 소프트웨어 버전 번호를 변경하고 내가 만든 릴리스에 태그를 지정하여 동료가 해당 릴리스를 복제 할 수 있습니다.

Git은 모든 것이 최신이라고 답했다. 태그를 보내지 않았습니다! 태그에 주석이 달지 않았기 때문일 수 있습니다. 아마도 지점에 새로운 것이 없었기 때문일 것입니다.

Git GUI와 비슷한 푸시를했을 때 태그가 전송되었습니다.

Git GUI와 함께 전송 된 태그

당분간은 커맨드 라인이 아닌 Git GUI를 사용하여 변경 사항을 리모컨으로 푸시하려고합니다 --follow-tags.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.