커밋 롤백
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 <branch>
- 브랜치의 변경 사항을 원격 저장소로 푸시합니다:
git push origin <branch>
새로운 대체 커밋으로 커밋 롤백
git revert <커밋-SHA>
git revert
와 git reset
의 차이
-
git reset
명령은 커밋을 제거합니다.git revert
명령은 변경 사항을 제거하지만 커밋은 유지합니다. -
git revert
명령은 안전하며, 되돌릴 수 있습니다.
# 변경된 파일
git commit -am "버그 도입"
git revert HEAD
# 변경을 되돌리는 새로운 커밋이 생성됨
# 이제 우리는 되돌린 커밋을 다시 적용하려고 합니다
git log # 되돌린 커밋의 해시를 가져옴
git revert <revert 커밋 해시>
# 되돌린 커밋이 다시 생성됨 (다시 새로운 커밋이 생성됨)