1. git reset
git reset HEAD^
- 깃 커밋 내역을 삭제하고 싶을 때 git reset 명령어를 사용합니다.
- HEAD는 현재 작업 중인 브랜치의 가장 최신 커밋을 가리키는 포인터입니다.
- HEAD^ 그리고 HEAD~1 는 현재 커밋의 한 단계 이전의 커밋 즉, 직전 커밋을 의미합니다.
- 두 단계 전 커밋을 가리키려면 HEAD^^ 라고 작성하면 됩니다.
2. git reset option
- git reset --mixed(생략가능)
- HEAD를 지정한 위치로 이동시키면서 해당 커밋에서 add 했던 스테이징 영역은 취소됩니다.
- 이전에 스테이징 됐던 변경내용이 스테이징 영역에서 내려가게 되어 unstaged 상태로 돌아갑니다.
- 작업 디렉토리의 변경내용이 유지됩니다.
- git reset --soft
- HEAD를 지정한 위치로 이동시키면서 해당 커밋에서 add 했던 스테이징 영역은 유지됩니다.
- 이전에 스테이징 됐던 변경내용이 그대로 스테이징 영역에 머무르게 되어 staged 상태를 유지합니다.
- 작업 디렉토리의 변경내용이 유지됩니다.
- git reset --hard
- HEAD를 지정한 위치로 이동시키면서 해당 커밋에서 add 했던 스테이징 영역은 삭제됩니다.
- 작업 디렉토리의 변경내용도 삭제됩니다.
3. repository에 push 하기
git push [리모트 브랜치 별명] [브랜치명]
git push origin main
- 마지막으로 지우고 싶은 커밋이 존재하는 리포지토리의 브랜치에 push를 하면 커밋 내역이 삭제됩니다.
- 이렇게, git reset 을 사용할 때 어떤 옵션을 적용하느냐에 따라 변경 내용이 "unstaged, staged, 완전히 삭제" 될 수 있습니다.
- 상황에 맞게 적절한 옵션을 골라 사용합시다.
'개발 > Git' 카테고리의 다른 글
GitHub Actions Workflow yml 파일 구성요소 (0) | 2024.04.17 |
---|---|
[Github] Pull Request 템플릿 만들기 (0) | 2024.03.19 |
[Github] 깃허브 리포지토리 필수 파일 - README.md / .gitignore / LICENCE (0) | 2022.12.17 |
[Github Actions] Error: Gradle script is not executable 오류 해결 (0) | 2022.12.08 |
[Github] 깃허브 SSH key 등록하기 - git@github.com:Permission denied (publickey) (0) | 2022.12.02 |