Git에서 특정 태그로 되 돌리는 방법은 무엇입니까?


85

Git 브랜치에서 이전 커밋으로 되 돌리는 방법을 알고 있지만 태그에 의해 지시 된 브랜치의 상태로 되돌리려면 어떻게해야합니까? 나는 다음과 같은 것을 상상한다.

git revert -bytag "Version 1.0 Revision 1.5"

이것이 가능한가?


"브랜치를 되감기"(예 : 커밋 제거 )하거나 현재 브랜치에 커밋을 추가하여 모든 파일이 "해당 태그가 지정한 커밋에 있었던 방식"이되도록 분기를 설정 하시겠습니까?
torek 2013-08-20

어느 쪽이든 작업을 완료해야하지만 설명하는 방식으로 현재 분기에 새 커밋을 추가 할 것이라고 생각합니다.
zachd1_618

이 경우이 답변git checkout <id> .방법을 사용하십시오 .
torek 2013-08-21

답변:


130

Git 태그는 커밋에 대한 포인터 일뿐입니다. 따라서 HEAD, 브랜치 이름 또는 커밋 sha 해시와 동일한 방식으로 사용합니다. 커밋 / 수정 인수를 허용하는 모든 git 명령에 태그를 사용할 수 있습니다. git rev-parse tagname가리키는 커밋을 표시하기 위해 시도해 볼 수 있습니다 .

귀하의 경우 최소한 다음 두 가지 대안이 있습니다.

  1. 현재 분기를 특정 태그로 재설정 :

    git reset --hard tagname
    
  2. 태그 상태로 이동하려면 상단에 되돌리기 커밋을 생성합니다.

    git revert tag
    

그래도 병합 커밋이 있으면 충돌이 발생할 수 있습니다.


28
"git revert <tag>"는 작업 복사본을 해당 버전으로 복원하는 대신 태그가 지정된 커밋의 변경 사항을 되돌 린다고 생각합니다.
Matt

추적되지
않거나

3
@Matt가 말했듯이 수락 된 답변은 태그가 지정된 커밋의 변경 사항 만 되돌리기 때문에 단순히 잘못된 것입니다. 가장 좋은 방법은 커밋 해시를 사용하고 다음 답변을 따르는 것입니다. stackoverflow.com/a/4114122/6348485
Swagga Ting

안녕하세요, "태그 상태로 이동하기 위해 상단에 되돌리기 커밋 생성"을 설명해 주시겠습니까? 불행히도 이것이 무엇을 의미하는지 모르겠습니다.
John Little

12

git reset 사용 :

git reset --hard "Version 1.0 Revision 1.5"

(지정된 문자열이 태그라고 가정).


1

git checkout을 사용할 수 있습니다.

허용 된 솔루션을 시도했지만 오류가 발생했습니다. warning: refname '<tagname>' is ambiguous'

그러나 대답에서 알 수 있듯이 태그는 커밋에 대한 포인터처럼 동작하므로 커밋 해시와 마찬가지로 태그를 체크 아웃하면됩니다. 유일한 차이점은 다음과 tags/같이 시작 한다는 것입니다 .

git checkout tags/<tagname>

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