우리는 git을 처음 사용하고, 저장소의 시작 부분에 태그를 설정하고 싶습니다. 우리의 프로덕션 코드는 시작 리포지토리와 동일하지만 그 이후 커밋을했습니다. 처음에 태그를 사용하면 생산을 알려진 안정적인 상태로 "롤백"할 수 있습니다.
그렇다면 임의의 오래된 커밋에 태그를 추가하는 방법은 무엇입니까?
우리는 git을 처음 사용하고, 저장소의 시작 부분에 태그를 설정하고 싶습니다. 우리의 프로덕션 코드는 시작 리포지토리와 동일하지만 그 이후 커밋을했습니다. 처음에 태그를 사용하면 생산을 알려진 안정적인 상태로 "롤백"할 수 있습니다.
그렇다면 임의의 오래된 커밋에 태그를 추가하는 방법은 무엇입니까?
답변:
예:
git tag -a v1.2 9fceb02 -m "Message here"
9fceb02
커밋 ID의 시작 부분은 어디에 있습니까 ?
그런 다음을 사용하여 태그를 누를 수 있습니다 git push origin v1.2
.
git log
현재 브랜치에 모든 커밋 ID를 표시 할 수 있습니다 .
Pro Git 책에는 태그 지정 에 관한 장도 있습니다.
경고 : 현재 날짜로 태그를 생성합니다 (예 : GitHub 릴리스 페이지에 해당 값이 표시됨). 커밋 날짜로 태그 날짜를 지정하려면 다른 답변을보십시오 .
-a
및 -m "Message here"
부품을 생략하십시오 .git tag v1.2 9fceb02
-a
과 -m
. 매뉴얼 페이지 는 사용될 -a
때 암시 적으로 보인다 -m
.
git push --tags origin master
로컬 지점의 모든 태그를 원격으로 푸시합니다. 선호 git push origin <tag_name>
방금 생성 된 태그를 밀어. 참조 : stackoverflow.com/a/5195913/452708 , git-scm.com/book/en/v2/Git-Basics-Tagging
# Set the HEAD to the old commit that we want to tag
git checkout 9fceb02
# temporarily set the date to the date of the HEAD commit, and add the tag
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" \
git tag -a v1.2 -m"v1.2"
# set HEAD back to whatever you want it to be
git checkout master
@dkinzer의 답변 은 커밋 날짜가 아닌 현재 날짜 ( git tag
명령을 실행할 때) 인 태그를 만듭니다 . Git 도움말 에는 "Backingating Tags" 섹션이 있습니다 .tag
다른 VCS에서 일부 변경 사항을 가져오고 작업의 주요 릴리스에 대한 태그를 추가하려는 경우 태그 오브젝트에 임베드 할 날짜를 지정할 수 있습니다. 태그 객체의 이러한 데이터는 예를 들어 gitweb 인터페이스의 태그 순서에 영향을줍니다.
향후 태그 객체에 사용되는 날짜를 설정하려면 환경 변수를 설정
GIT_COMMITTER_DATE
하십시오 (나중에 가능한 값에 대한 설명을 참조하십시오. 가장 일반적인 형식은 "YYYY-MM-DD HH : MM").예를 들면 다음과 같습니다.
$ GIT_COMMITTER_DATE="2006-10-02 10:31" git tag -s v1.0.1
"Git에서 태그하는 방법" 페이지 는 다음을 통해 HEAD 커밋 시간을 추출 할 수 있음을 보여줍니다.
git show --format=%aD | head -1
#=> Wed, 12 Feb 2014 12:36:47 -0700
다음을 통해 특정 커밋 날짜를 추출 할 수 있습니다.
GIT_COMMITTER_DATE="$(git show 9fceb02 --format=%aD | head -1)" \
git tag -a v1.2 9fceb02 -m "v1.2"
그러나 커밋을 두 번 반복하는 대신 HEAD를 해당 커밋으로 변경하고 두 명령 모두에서 암시 적으로 사용하는 것이 더 쉬워 보입니다.
git checkout 9fceb02
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" git tag -a v1.2 -m "v1.2"
이를 수행하는 가장 간단한 방법은 다음과 같습니다.
git tag v1.0.0 f4ba1fc
와 f4ba1fc
태그에 원하는 커밋의 해시의 시작 인과 v1.0.0
당신이 태그에 원하는 버전 인.
사용 명령 :
git tag v1.0 ec32d32
여기서 v1.0은 태그 이름이고 ec32d32는 태그하려는 커밋입니다.
완료되면 다음을 통해 태그를 푸시 할 수 있습니다.
git push origin --tags
참고:
OK , 당신은 간단하게 할 수 있습니다 :
git tag -a <tag> <commit-hash>
따라서 commit : to 태그 를 추가하려면 다음을 e50f795
수행하십시오.
git tag -a 1.0.2 e50f795
또한 다음을 사용하여 마지막에 메시지 를 추가-m
하십시오.
git tag -a 1.0.2 e50f795 -m "my message"
결국, 당신은 그것을하기 위해 푸시해야합니다 remote
.
git push origin 1.0.2
태그를 하나씩 언급하고 싶지 않은 태그가 많은 경우 간단히 다음을 수행하십시오.
git push origin --tags
모든 태그를 함께 밀어 넣으려면 ...
또한 단계를 더 명확히하기 위해 아래 이미지에 단계를 만들었습니다.
Hub 에서 태그를 추가 하거나 SourceTree 와 같은 도구를 사용 하여 이전 단계를 피하기 위해이 경우 Bitbucket 에 로그인 하여 거기에서 수행 할 수 있습니다.
No tags
하고 클릭 +
아이콘 :다른 사람들의 대답을 바탕으로 태그 날짜를 실제로 발생한 날짜로 설정하고 주석이 달린 태그를 사용하며 필요하지 않은 단일 라이너 솔루션이 있습니다 git checkout
.
tag="v0.1.3" commit="8f33a878" bash -c 'GIT_COMMITTER_DATE="$(git show --format=%aD $commit)" git tag -a $tag -m $tag $commit'
git push --tags origin master
여기서 tag
원하는 태그 문자열과 commit
커밋 해시로 설정됩니다.