
여러 커밋을 했습니다. 그런 다음 중간에 커밋으로 다시 돌아와야 했습니다. 거기에서 변경 사항을 적용하고 새 지점을 만들었습니다. 이제 내가 원하는 것은 다른 모든 커밋을 건너뛰고(제거, 삭제) 분기를 마스터 버전으로 사용하는 것입니다. 하지만 어떻게 해야 할지 알 수 없습니다.
상황에 대한 설명은 다음과 같습니다.
commit1 (latest)
commit2
commit3 (head pointing here)
other commits...
시점에서 commit3
변경 사항을 적용하고 이를 푸시하기 위해 새 브랜치를 만들었습니다.
commit2
이제 및 를 제거하여 분기 버전을 기본 버전으로 만들고 싶습니다 commit1
.
답변1
푸시했기 때문에 깨질 가능성이 가장 낮은 옵션은 다음과 같습니다 git revert
.
git checkout master
git revert commit1 commit2
git merge new-branch
git push
이로 인해 master는 new-branch와 정확히 동일한 파일을 가지게 되지만, commit1과 commit2는 변경 사항을 되돌리는 두 개의 추가 커밋과 함께 여전히 master의 기록에 남아 있습니다.
권장되지 않음
이미 마스터에서 푸시한 커밋을 실제로 제거하려면 먼저 모든 팀원에게 작업이 중단될 수 있음을 알리고 다음을 사용하세요 git reset
.
git checkout master
git reset --hard commit3
git merge new-branch
git push -f
--hard
파일 시스템에서 commit1 및 commit2에 의해 변경된 모든 내용이 제거됩니다. 를 사용하면 --soft
해당 커밋을 제거하는 동시에 파일 시스템의 변경 사항을 보존할 수 있습니다.
팀원들에게 다음에 대한 문서를 알려줄 수도 있습니다.업스트림 리베이스에서 복구(git Reset은 이미 푸시된 커밋에 대한 사용에 관해 이야기할 때 해당 섹션을 가리킵니다 reset --hard
.)