Git을 사용하여 태그를 원격 저장소에 어떻게 푸시합니까?


2217

랩톱에 원격 Git 리포지토리를 복제 한 다음 태그를 추가하고 싶었습니다.

git tag mytag master

git tag랩톱에서 실행할 때 태그 mytag가 표시됩니다. 그런 다음이를 원격 저장소로 푸시하여 모든 클라이언트 에이 태그가 있으므로 실행 git push하지만 메시지가 나타납니다.

최신의 모든 것

데스크톱으로 가서 실행 git pull하면 git tag태그가 표시되지 않습니다.

또한 프로젝트의 파일을 약간 변경 한 다음 서버로 푸시하려고했습니다. 그 후 서버에서 데스크탑 컴퓨터로 변경 사항을 가져올 수 있지만 데스크탑 컴퓨터에서 실행할 때 여전히 태그가 없습니다 git tag.

모든 클라이언트 컴퓨터가 볼 수 있도록 태그를 원격 저장소로 푸시하려면 어떻게해야합니까?

답변:


1087

git push --follow-tags

이것은 Git 1.8.3에 도입 된 제정신 옵션입니다.

git push --follow-tags

커밋과 둘 다 태그 만 푸시합니다.

  • 주석이 달린
  • 푸시 된 커밋에서 도달 가능 (조상)

이것은 다음과 같은 이유로 제정신입니다.

--tags피해야 할 이유는 바로이 때문입니다.

망할 놈의 2.4 추가했다push.followTags 당신이 설정할 수 있습니다 기본적으로에이 플래그를 설정하는 옵션 :

git config --global push.followTags true

16
덕분에 모든 콘텐츠를 한 번에 푸시하고 콘텐츠를 푸시 한 다음 태그를 별도로 푸시하는 것이 좋습니다.
Shane

1
그것이 "주석을 붙인"과 "밀어 넣은 커밋에서 도달 할 수있는"사이의 관계라는 것이 한 번에 분명하지 않았습니다. 주석이 달린 지 여부에 관계없이 도달 가능한 모든 태그를 푸시하기를 바랍니다. OR이 아닌지 확인하기 위해 수정 하시겠습니까?
Gauthier

soo, 내가 한 것처럼 bitbucket으로 돌아가서 명령 줄에서 태그 목록을 볼 수있는 것 외에 다른 곳에서 태그 목록을 볼 수 있습니까?
PositiveGuy

10
이것은 git 2.5.0에서 작동하지 않지만 작동합니다 git push origin --tags.
nnyby

3
push.followTags 팁에 감사드립니다. 이것이 기본 설정이 아니라고 믿을 수 없습니다. 그것 없이는 태그를 귀찮게하지 마십시오. 동기화 태그를 잊어 버릴 수 있습니다.
moodboom

3605

단일 태그 를 푸시하려면

git push origin <tag_name>

그리고 다음 명령은 모든 태그를 푸시 해야 합니다 ( 권장되지 않음 ).

git push --tags

426
git push --tags동료가 모든 태그를 푸시하도록 교육을받을 때 나쁜 태그를 제거하기가 매우 어려울 수 있으므로 다른 사람을 사용하거나 교육하지 않는 것이 좋습니다. 새 태그를 푸시합니다. 이 때문에 나는 모든 사람에게 git push origin <tag_name>지금 사용하도록 조언 할 것 입니다.
Scott Jungwirth

43
이동 된 태그 를 푸시하려면 : git push origin <tag_name> --force
Bob Stein

38
글쎄 @ScottJungwirth 개발자로서 조심해야한다고 생각합니다. 그렇지 않으면 사용 가능한 명령을 전혀 가르치지 않는 것이 좋습니다.
Willa

18
태그가 원격 브랜치와 동일하고로 git push실패하면 다음과 error: src refspec <tag_name> matches more than one.같이 푸시 할 수 있습니다.git push origin tag <tag_name>
Volodymyr Sapsai

5
@Willa의 질문은 " 원격 저장소에 태그를 넣는 "이었습니다 . 따라서 git push origin <tag_name>그 질문에 대한 훨씬 더 나은 대답입니다. ;)
와일드 카드

265

구체적으로 말하면, 하나의 태그는 다음을 수행합니다. git push origin tag_name


99

Trevor의 답변 을 확장하려면 단일 태그 또는 모든 태그를 한 번에 푸시하면됩니다.

단일 태그를 밀어

git push <remote> <tag>

다음은이 를 설명 하는 관련 문서 의 요약입니다 (간단하게하기 위해 일부 명령 옵션은 생략 됨).

git push [[<repository> [<refspec>…]]

<refspec>...

<refspec>매개 변수 의 형식 은… 소스 ref <src>, 콜론 :, 목적지 ref <dst>…입니다.

(가) <dst>이 푸시 업데이트되는 원격지에있는 REF 말한다 ... 경우는 :<dst>생략 같은 REF <src>업데이트 될 것이다 ..

태그 <tag>는와 동일 함을 의미합니다 refs/tags/<tag>:refs/tags/<tag>.

모든 태그를 한 번에 푸시

git push --tags <remote>
# Or
git push <remote> --tags

다음은 관련 문서에 대한 요약입니다 (간단하게하기 위해 일부 명령 옵션은 생략 됨).

git push [--all | --mirror | --tags] [<repository> [<refspec>…]]

--tags

refs/tags명령 행에 명시 적으로 나열된 참조 스펙 외에 모든 참조 가 푸시됩니다.


예제는 키워드를 제외하고 tag있습니다. 예 git push origin tag funny-tag-1.
JamesThomasMoon1979

1
@ JamesThomasMoon1979 필요 없습니다. 다음과 같이 단일 태그를 원점으로 밀어 넣습니다. git push origin my-tag(방금 시도했습니다!)
Andres F.

나는 버전 1.9.1 을 사용하고 있었으며 , @AndresF는 어떻습니까. ?
JamesThomasMoon1979

1
@ JamesThomasMoon1979 버전 2.10.2. 그게 다야?
Andres F.

54

git push 명령으로 태그가 원격 저장소로 전송되지 않습니다. 다음 명령을 사용하여 이러한 태그를 원격 서버로 명시 적으로 보내야합니다.

git push origin <tagname>

아래 명령을 사용하여 모든 태그를 한 번에 푸시 할 수 있습니다.

git push origin --tags

git 태그 지정에 대한 자세한 내용은 다음 리소스를 참조하십시오.

http://www.cubearticle.com/articles/more/git/git-tag

http://wptheming.com/2011/04/add-remove-github-tags


50

단순히 git push --tags명령으로 모든 로컬 태그를 푸시 할 수 있습니다 .

$ git tag                         # see tag lists
$ git push origin <tag-name>      # push a single tag
$ git push --tags                 # push all local tags 


15

git push <remote-name> tag <tag-name>태그를 밀고 있는지 확인하기 위해 사용 하고 있습니다. 나는 그것을 다음과 같이 사용한다 : git push origin tag v1.0.1. 이 패턴은 문서 ( man git-push)를 기반으로합니다 .

OPTIONS
   ...
   <refspec>...
       ...
       tag <tag> means the same as refs/tags/<tag>:refs/tags/<tag>.

1
분기가 아닌 태그가 err에 의해 푸시되도록 보장하므로 우수해야합니다.
samshers
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.