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
반응형
'개발관련 > Git' 카테고리의 다른 글
git 커밋 및 태그를 동시에 푸시하는 방법 (0) | 2021.11.30 |
---|---|
로컬 git 브랜치를 원격 브랜치와 비교하는 방법 (0) | 2021.11.29 |
한 git 저장소에서 다른 저장소 (복제본 아님)로 파일을 이동하여 기록을 보존하는 방법 (0) | 2021.11.29 |
모든 Git 태그를 나열하는 방법 (0) | 2021.11.29 |
추적을 중지하고 Git에서 파일 변경 사항을 무시하는 방법 (0) | 2021.11.27 |