커밋 롤백

Git에서 실수를 한 경우 변경 내용을 되돌리거나 롤백할 수 있습니다. 자세한 내용은 실행 취소 옵션을 참조하십시오.

커밋을 제거하여 실행 취소

  • 마지막 커밋을 실행 취소하고 모든 것을 스테이징 영역으로 되돌립니다:

    git reset --soft HEAD^
    
  • 파일을 추가하고 커밋 메시지를 변경합니다:

    git commit --amend -m "새 메시지"
    
  • 마지막 변경 사항을 실행 취소하고 다른 모든 변경 사항을 제거합니다(아직 푸시하지 않은 경우):

    git reset --hard HEAD^
    
  • 마지막 변경 사항을 실행 취소하고 마지막 두 개의 커밋을 제거합니다(아직 푸시하지 않은 경우):

    git reset --hard HEAD^^
    

Git 리셋 샘플 작업 흐름

다음은 일반적인 Git 리셋 작업 흐름입니다:

  1. 파일을 편집합니다.
  2. 브랜치의 상태를 확인합니다:

    git status
    
  3. 잘못된 커밋 메시지로 변경 사항을 브랜치에 커밋합니다:

    git commit -am "kjkfjkg"
    
  4. Git 로그를 확인합니다:

    git log
    
  5. 올바른 커밋 메시지로 커밋을 수정합니다:

    git commit --amend -m "새로운 코멘트 추가"
    
  6. 다시 Git 로그를 확인합니다:

    git log
    
  7. 브랜치를 소프트 리셋합니다:

    git reset --soft HEAD^
    
  8. 다시 Git 로그를 확인합니다:

    git log
    
  9. 원격 저장소에서 브랜치의 업데이트를 가져옵니다:

    git pull origin <branch>
    
  10. 브랜치의 변경 사항을 원격 저장소로 푸시합니다:
   git push origin <branch>

새로운 대체 커밋으로 커밋 롤백

git revert <커밋-SHA>

git revertgit reset의 차이

  • git reset 명령은 커밋을 제거합니다. git revert 명령은 변경 사항을 제거하지만 커밋은 유지합니다.
  • git revert 명령은 안전하며, 되돌릴 수 있습니다.
# 변경된 파일
git commit -am "버그 도입"
git revert HEAD
# 변경을 되돌리는 새로운 커밋이 생성됨
# 이제 우리는 되돌린 커밋을 다시 적용하려고 합니다
git log # 되돌린 커밋의 해시를 가져옴
git revert <revert 커밋 해시>
# 되돌린 커밋이 다시 생성됨 (다시 새로운 커밋이 생성됨)