커밋 롤백
Git에서 실수를 하면 변경 내용을 되돌리거나 롤백할 수 있습니다. 자세한 내용은 되돌릴 옵션을 참조하세요.
커밋을 제거하여 롤백하기
-
마지막 커밋을 되돌리고 모든 것을 스테이징 영역으로 되돌립니다:
git reset --soft HEAD^
-
파일을 추가하고 커밋 메시지를 변경합니다:
git commit --amend -m "새 메시지"
-
마지막 변경 사항을 되돌리고 아직 푸시하지 않았다면 다른 모든 변경 사항을 제거합니다:
git reset --hard HEAD^
-
마지막 변경 사항을 되돌리고 아직 푸시하지 않았다면 마지막 두 개의 커밋을 제거합니다:
git reset --hard HEAD^^
Git 리셋 샘플 워크플로우
다음은 일반적인 Git 리셋 워크플로우입니다:
- 파일을 편집합니다.
-
브랜치의 상태를 확인합니다:
git status
-
잘못된 커밋 메시지로 브랜치에 변경 사항을 커밋합니다:
git commit -am "kjkfjkg"
-
Git 로그를 확인합니다:
git log
-
올바른 커밋 메시지로 커밋을 수정합니다:
git commit --amend -m "새 댓글 추가됨"
-
다시 Git 로그를 확인합니다:
git log
-
브랜치를 소프트 리셋합니다:
git reset --soft HEAD^
-
다시 Git 로그를 확인합니다:
git log
-
원격 리포지터리에서 브랜치의 업데이트를 풀어옵니다:
git pull origin <브랜치>
-
브랜치의 변경 사항을 원격 리포지터리에 푸시합니다:
git push origin <브랜치>
새로운 대체 커밋으로 커밋 롤백하기
git revert <커밋-SHA>
git revert
와 git reset
의 차이
-
git reset
명령어는 커밋을 제거합니다.git revert
명령어는 변경 사항을 제거하지만 커밋은 남겨둡니다. -
git revert
명령어는 더 안전합니다. 왜냐하면 되돌릴 수 있기 때문입니다.
# 변경된 파일
git commit -am "버그 도입"
git revert HEAD
# 변경 사항을 되돌리는 새로운 커밋이 생성됨
# 이제 우리는 되돌린 커밋을 다시 적용하고 싶습니다
git log # 되돌린 커밋의 해시를 가져옴
git revert <되돌린 커밋 해시>
# 되돌린 커밋이 다시 돌아옵니다 (새로운 커밋이 다시 생성됨)