programing

도짓 태그도 밀립니까?

telebox 2023. 7. 11. 22:52
반응형

도짓 태그도 밀립니까?

리포지토리를 만든 이후로 만든 태그가 리포지토리에 푸시되지 않은 것 같습니다.가 할 때는.git tag 작업을 는 " " "라는 태그가 있습니다.git tag처음 몇 명만 나타납니다.

무엇이 문제입니까?

다음과 같이 할 수 있습니다.

git push --tags

기본 git 원격 구성에서는 태그가 가리키는 커밋과 함께 자동으로 가져오는 동안 태그를 명시적으로 푸시해야 합니다.사용해야 합니다.

$ git push <remote> tag <tagname>

단일 태그를 누르기 위해, 또는

$ git push <remote> --tags

모든 태그를 푸시합니다(또는git push --tags원격으로 으로 일적으 원기로푸시으격origin).

이는 태그를 명시적으로 밀어넣기 위한 매우 의도적인 동작입니다.태그를 누르는 것은 일반적으로 의식적인 선택이어야 합니다.


Junio C가 무엇인지 요약합니다.Hamano는 (@Andre Miras의 코멘트에 링크됨)라고 썼습니다.

가져올 때 다른 사용자가 게시한 원격 리포지토리와 상호 작용합니다. 즉, 다음을 의미합니다.

  1. 그곳에 존재하는 태그 세트는 출판사가 사람들이 보기를 원하는 모든 것입니다.
  2. 사용자뿐만 아니라 다른 사람들도 동일한 태그를 볼 수 있습니다.

즉, 가져온 리포지토리의 태그는 공개되고 공유되도록 설계됩니다.모든 사람이 이러한 동일한 태그를 쉽게 가져올 수 있다면 개발자 간의 의사소통이 용이해질 것입니다.

그렇기 때문에git fetch태그를 자동으로 "다운로드"합니다. 즉, 태그가 가리키는 수정사항을 다운로드할 때 태그를 다운로드합니다. 즉, 게시된 모든 관련 태그를 다운로드합니다.

밀어넣을 때 작업 리포지토리에서 밀어넣는 것입니다. 작업 리포지토리는 대부분 공용이 아니며 해당 리포지토리의 태그는 공용이 아닙니다.자체 로컬 태그를 사용하여 진행률을 표시할 수 있으므로, 태그가 정의상 공용인 변경 내용을 게시하려는 리포지토리에 리포지토리의 모든 태그를 맹목적으로 밀어넣는 것은 의미가 없습니다.

그렇기 때문에 태그를 공개로 표시하기 위해 태그를 명시적으로 밀어넣어야 합니다.


또는 항상 모든 태그를 밀어넣도록 원격을 구성할 수 있습니다. 예를 들어, 이러한 태그를 당신의 컴퓨터에 넣으십시오..git/config:

[원격 "리모트"] # 또는 이름이 무엇이든.URL = ...
푸시 = +refs/heads/*:refs/heads/*푸시 = +refs/ssh/*:refs/ssh/*

즉, 모든 헤드(모든 분기)와 모든 태그를 강제로 푸시합니다(헤드를 강제로 푸시하지 않으려면 refspec에서 '+' 접두사를 제거하십시오).

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

새로운 "--follow-tags옵션은 "을 나타냅니다.git push분기를 밀어낼관련 주석이 달린 태그를 밀어냅니다.

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

git push --follow-tags

그렇다고 모든 로컬 태그가 푸시되진 않을 것이며, 커밋에 의해 참조되는 주석이 달린 태그만 푸시됩니다.git push.


이것은 주니오 C 하마노()gitster에 의해 commit c2aba15에 소개되었습니다.

새 옵션 "--follow-tags"라고 말합니다.git push다른 쪽에서 누락된 주석이 달린 태그를 밀어내고, 그렇지 않으면 밀어낸 기록에 도달할 수 있습니다.

예를 들어, "를 사용하는 경우simple", "current또는 "upstream푸시, 당신은 보통 현재 커밋으로 이어지는 이력을 푸시할 것입니다.HEAD그리고 그 외 아무것도 없다.
이 옵션을 사용하면 해당 커밋에서 도달할 수 있는 주석이 달린 모든 태그를 다른 쪽으로 밀어넣을 수도 있습니다.


구성push.followTags포함할 수 있음--follow-tags기본적으로 (Git 2.4.1+, 2015년 2분기)."Git 커밋 및 태그 동시 적용"을 참조하십시오.

제가 주로 하는 일은:

[원격 "리모트"] # 또는 이름이 무엇이든.URL = ...
푸시 = :푸시 = +refs/ssh/*:refs/ssh/*

즉, 이미 있는 모든 분기와 태그를 푸시합니다.수동으로 누르지 않은 분기를 누르지도 않고 밀지도 않습니다.

모든 태그를 강제로 가져오려면 구성에서 다음과 같이 설정할 수 있습니다.

git config remote.origin.tagopt --tags

문서에서:

이 값을 --no-tags로 설정하면 원격에서 가져올 때 자동 태그 추적이 비활성화됩니다.--tags로 설정하면 원격 분기 헤드에서 연결할 수 없는 태그라도 원격에서 모든 태그를 가져옵니다.이러한 플래그를 git-fetch(1)에 직접 전달하면 이 설정을 재정의할 수 있습니다.git-fetch(1)의 --tags 및 --no-tags 옵션을 참조하십시오.

언급URL : https://stackoverflow.com/questions/2988088/do-git-tags-get-pushed-as-well

반응형