마스터 브랜치에서 다음 v0.1
과 같은 태그를 만들었습니다 .
git tag -a v0.1
그러나 릴리스 0.1의 마스터로 병합 해야하는 변경 사항이 여전히 있음을 깨달았습니다. 그러나 이제 내 v0.1
태그가 잘못된 커밋에 붙어 있습니다 (Post-it Note 유추를 호출하기 위해). 마스터에서 가장 최근의 커밋에 붙어 있기를 원하지만 대신 마스터에서 두 번째로 최근 커밋에 붙어 있습니다.
마스터에서 가장 최근의 커밋으로 어떻게 옮길 수 있습니까?
답변
-f
옵션을 사용하여 다음을 수행하십시오 git tag
.
-f
--force
Replace an existing tag with the given name (instead of failing)
어노테이션이없는 태그 대신 어노테이션이있는 태그를 작성하기 위해 -f
함께 사용할 수 -a
있습니다.
예
-
푸시하기 전에 리모컨의 태그를 삭제하십시오
git push origin :refs/tags/<tagname>
-
가장 최근의 커밋을 참조하도록 태그를 교체하십시오.
git tag -fa <tagname>
-
태그를 원격 원점으로 미십시오
git push origin master --tags
답변
보다 정확하게는 태그를 강제로 추가 한 다음 –tags 및 -f 옵션을 사용하여 푸시해야합니다.
git tag -f -a <tagname>
git push -f --tags
답변
리모컨이 호출 origin
되고 master
지점에서 작업중인 경우 요약하면 다음 과 같습니다.
git tag -d <tagname>
git push origin :refs/tags/<tagname>
git tag <tagname> <commitId>
git push origin <tagname>
- 1 행은 로컬 환경에서 태그를 제거합니다.
- 2 행은 원격 환경에서 태그를 제거합니다.
- 3 행은 다른 커밋에 태그를 추가합니다
- 라인 4는 변경 사항을 리모컨으로 푸시합니다
또한 4 행을 교환 git push origin --tags
하여 모든 변경 사항을 로컬 변경 사항의 태그로 푸시 할 수 있습니다 .
@ stuart-golodetz, @ greg-hewgill, @eedeep, @ ben-hocking 답변, 답변 아래 댓글 및 내 답변 아래 NateS 의견을 기반으로합니다.
답변
로 삭제 git tag -d <tagname>
한 다음 올바른 커밋에서 다시 작성하십시오.
답변
Git을 사용할 때 몇 가지를 피하려고합니다.
-
내부 지식 (예 : 심판 / 태그) 사용 문서화 된 Git 명령 만 사용하려고 시도하고 .git 디렉토리의 내부 내용에 대한 지식이 필요한 것을 사용하지 마십시오. 즉, Git을 Git 개발자가 아닌 Git 사용자로 취급합니다.
-
필요하지 않은 경우 힘을 사용합니다.
-
지나친 것들. (분기 및 / 또는 많은 태그를 푸시하여 원하는 위치에 하나의 태그를 얻습니다.)
Git 내부에 대한 지식없이 로컬 및 원격으로 태그를 변경하는 비폭력 솔루션입니다.
소프트웨어 수정 프로그램에 궁극적으로 문제가있어서 업데이트 / 다시 릴리스해야 할 때 사용합니다.
git tag -d fix123 # delete the old local tag
git push github :fix123 # delete the old remote tag (use for each affected remote)
git tag fix123 790a621265 # create a new local tag
git push github fix123 # push new tag to remote (use for each affected remote)
github
샘플 원격 이름, fix123
샘플 태그 이름 및 790a621265
샘플 커밋입니다.
답변
여기에 내가 필요로하는 다른 형태의 명령을 남길 것입니다. 움직일
태그가있었습니다 v0.0.1.2
.
$ git tag -f v0.0.1.2 63eff6a
Updated tag 'v0.0.1.2' (was 8078562)
그리고:
$ git push --tags --force
답변
다른 방법 :
원격 저장소에서 태그를 이동하십시오 (필요한 경우 HEAD를 다른 것으로 교체하십시오).
$ git push --force origin HEAD:refs/tags/v0.0.1.2
변경 사항을 다시 가져옵니다.
$ git fetch --tags