마스터 브랜치를 git의 태그로 되돌리려면 어떻게해야합니까? 초기 상태는에 태그가 지정되었습니다 tag_ABC. 개발 브랜치에 대한

우리는 가지의 기원을 가지고 발전합니다. 마스터의 초기 상태는에 태그가 지정되었습니다 tag_ABC.

개발 브랜치에 대한 변경 사항이 거의 없으며 원본으로 푸시되었습니다. 그런 다음 실수로 개발을 마스터로 병합하고 원점으로 푸시했습니다.

이제 마스터를 체크 포인트로 되돌리려 고합니다 tag_ABC. 어떻게 할 수 있습니까?



답변

넌 할 수있어

git checkout master
git reset --hard tag_ABC
git push --force origin master

이렇게하면 업스트림 저장소의 기존 기록을 덮어 쓰고이 저장소를 체크 아웃 한 다른 개발자에게 문제가 발생할 수 있습니다.


답변

이것은 질문에 대한 직접적인 대답은 아니지만 지점의 코드를 태그 릴리스로 되 돌리는 방법을 검색 할 때이 페이지가 다시 나타납니다.

또 다른 방법은 분기의 현재 상태와 되돌리려는 태그 사이에 diff를 만든 다음 분기에 적용하는 것입니다. 이렇게하면 버전 기록이 올바르게 유지되고 변경 사항이 들어갔다가 다시 나오는 것을 보여줍니다.

브랜치가 master 라고 가정 하고 돌아 가려는 태그가 1.1.1 이라고 가정합니다.

git checkout 1.1.1
git diff master > ~/diff.patch
git checkout master
cat ~/diff.patch | git apply
git commit -am 'Rolled back to version 1.1.1'
git push origin master