IT탐험

복귀(reset, revert) 본문

공부내용정리/Git

복귀(reset, revert)

watercase 2021. 12. 28. 00:35
  • 깃은 소스 코드의 시간에 따른 변화 흐름을 기록하는데 저장된 변화 흐름 단계를 커밋(commit)이라고 함

 

  • 커밋을 기준으로 원하는 특정 시점의 상태로 전체 코드를 되돌리는 방법을 복귀라 하고 reset과 revert 두 가지 방법이 있음
    • <!-- 복귀하고자 하는 특정 시점을 찾을때 사용함 -->
      git log --oneline
    • reset : 특정 커밋의 해시 값 상태로 모든 코드를 복구함
      • git reset 옵션 커밋ID
      • 함께 사용하는 세 가지 옵션이 있음
        • soft : 파일을 수정하고, add 명령어로 스테이지 영역에 올려 커밋을 실행하기 직전의 단계로 되돌림
        • mixed : soft 옵션과 다르게 리셋한 후 스테이지를 복원하지 않고 워킹 디렉터리에 남겨둠
        • hard : 워킹 디렉터리와 스테이지가 모두 비어 있는 이전 상태로 복원함
          • soft와 mixed옵션은 되돌리는 과정에서 변경내용들이 삭제되지 않고 워킹 디렉터리에 유지되지만 hard는 변경내용도 삭제하여 완전히 이전 커밋의 상태로 되돌림
      • reset --soft 명령을 활용하면 한 브랜치의 여러 커밋을 하나로 합치는 동작을 수행할 수 있음
      • <!-- 특정 파일을 리셋 -->
        git reset 파일이름
        
        <!-- 특정 파일을 특정 시점으로 리셋 -->
        git reset 커밋ID 파일이름
        
        <!-- 수정 작업을 완전히 취소 -->
        git reset --hard HEAD
        
        <!-- 병합 취소 -->
        git reset --merge HEAD~
      • 저장소를 외부에 공개했거나 공유하고 있다면 리셋이 함께 작업하는 개발자에게 혼란을 줄 수 있으므로 사용을 지양함
  • revert : 기존 커밋을 남겨 두고 취소에 대한 새로운 커밋을 생성하므로 협업과정에서 사용됨
    • <!-- 리버트로 현재 커밋을 취소 -->
      git revert HEAD
      
      <!-- 직전의 커밋이 아닌 다른 커밋을 취소 -->
      git revert 커밋ID
      
      <!-- 리버트로 여러 커밋을 취소 -->
      git revert 커밋ID .. 커밋ID
      
      <!-- 리버트로 병합 취소 -->
      git revert --mainline 숫자 병합커밋ID

'공부내용정리 > Git' 카테고리의 다른 글

서브모듈(submodule)  (0) 2021.12.29
배포와 태그(tag)  (0) 2021.12.28
병합과 충돌(merge, rebase)  (0) 2021.12.27
스태시(stash)  (0) 2021.12.27
브랜치(branch, checkout)  (0) 2021.12.26
Comments