개발관련/Git

git 커밋을 삭제하고 변경 사항을 유지하는 방법

Rateye 2021. 11. 29. 00:33
728x90
반응형
질문 : git 커밋을 삭제하고 변경 사항을 유지할 수 있습니까?

개발 브랜치 중 하나에서 코드베이스를 약간 변경했습니다. 작업중인 기능을 완료하기 전에 일부 기능을 데모하기 위해 현재 브랜치를 마스터로 전환해야했습니다. 그러나 "git checkout master"를 사용하는 것만으로도 개발 브랜치에서 변경 한 내용이 보존되어 master의 일부 기능이 손상되었습니다. 그래서 제가 한 것은 "임시 커밋"이라는 커밋 메시지와 함께 개발 브랜치의 변경 사항을 커밋 한 다음 데모를위한 체크 아웃 마스터였습니다.

이제 데모 작업을 마치고 다시 개발 브랜치 작업으로 돌아 왔으므로 변경 사항을 그대로 유지하면서 만든 "임시 커밋"을 제거하고 싶습니다. 가능합니까?

답변

다음과 같이 간단합니다.

git reset HEAD^

참고 : 일부 쉘은 ^ 를 특수 문자로 처리하므로 (예 : 일부 Windows 쉘 또는 globbing이 활성화 된 ZSH ) 이러한 경우 "HEAD^" 를 인용해야 할 수 있습니다.

--hard 또는 --soft 없이 git reset 은 파일을 변경하지 않고 지정된 커밋을 가리 키도록 HEAD 를 이동합니다. HEAD^ 는 현재 커밋의 (첫 번째) 부모 커밋을 참조하며, 귀하의 경우에는 임시 커밋 이전의 커밋입니다.

또 다른 옵션은 정상적으로 수행 한 다음 다음 커밋 지점에서 대신 실행하는 것입니다.

git commit --amend [-m … etc]

대신 가장 최근 커밋을 편집 하여 위와 동일한 효과를 갖습니다.

(거의 모든 git 답변과 마찬가지로) 이미 다른 사람이 가져 왔을 수있는 위치에 잘못된 커밋을 푸시 한 경우 문제가 발생할 수 있습니다. 그것을 피하십시오

출처 : https://stackoverflow.com/questions/15772134/can-i-delete-a-git-commit-but-keep-the-changes
728x90
반응형