HOWTO · Git
커밋을 삭제하지만 Git의 변경 사항은 유지
변경 사항을 유지하면서 다양한 방법을 사용하여 Git 커밋을 삭제할 수 있습니다.
이 문서에서는 동일한 커밋에 의해 도입된 변경 사항을 유지하면서 Git 커밋을 실행 취소하는 데 필요한 단계를 설명합니다. 동일한 효과를 갖는 두 가지 명령을 사용할 수 있습니다.
더 이상 고민하지 않고 바로 시작하겠습니다.
커밋을 삭제하지만 Git의 변경 사항은 유지
예를 사용하여 이 개념을 살펴보겠습니다.
리포지토리에 아래에 표시된 커밋 기록이 있다고 가정하면 최신 커밋을 삭제하고 변경 사항을 유지하려면 어떻게 해야 합니까?
목표를 달성하기 위해 사용할 수 있는 두 가지 방법이 있습니다. 가장 쉬운 첫 번째 방법을 확인해 봅시다.
git reset 명령으로 커밋 삭제 및 변경 사항 유지
아래와 같이 git reset 명령을 사용하여 변경 사항을 유지하면서 커밋을 취소할 수 있습니다.
$ git reset HEAD~
이렇게 하면 Update Config.py 커밋이 제거되지만 파일에 대한 변경 사항은 유지됩니다. git log 명령을 실행하여 사례를 확인할 수 있습니다.
git status 명령을 실행하면 스테이지되지 않은 변경 사항이 있음을 알 수 있습니다. 이는 반드시 파일이 변경되었음을 의미하지는 않습니다.
--soft 또는 --hard 옵션 없이 git reset 명령을 사용하면 Git은 커밋의 영향을 받는 파일을 변경하지 않고 지정된 커밋을 실행 취소합니다.
인덱스에 변경 사항을 추가하고 git commit --amend--no-edit 명령을 실행하여 인덱스에서 변경 사항을 제거하고 최신 커밋에 마운트할 수 있습니다.
또는 커밋을 삭제하는 대신 개발을 계속하고 새 커밋을 만들 때 git commit --amend 명령을 실행할 수 있습니다. 이 시점에서 삭제하려는 커밋에 새 수정 사항을 추가하고 커밋 메시지를 편집할 수도 있습니다.
간단히 말해서 Git을 사용하면 커밋을 취소하고 동일한 커밋에 의해 도입된 변경 사항을 유지할 수 있습니다. git reset 명령과 git commit --amend 명령을 사용하여 목표를 달성할 수 있습니다.