Git - Git Rollback


1. git reset 을 통한 되돌리기

  • $ git reset 이라는 명령어를 통해서 버전을 되돌릴 수 있다.
  • 이 때 무조건 한 번이상 Commit 하여야지만 사용 가능하다.
  • 아래 명령어에서 HEAD는 현재 작업중인 브랜치/커밋 중 가장 최근 커밋을 의미한다.
  • ^ 한 개는, 한 번을 되돌린다는 뜻이다.( HEAD^ 이면, 가장 최근 버전 하나를 되돌린다는 것이다. ) ( HEAD^^ 이면, 가장 최근 버전과 가 이전 버전까지 두 개를 되돌린다는 의미이다. )
  • $ git reset –hard HEAD^
    • —> Local Repository 에서 최근 버전의 모든 파일들을 수정하기 이전으로 되돌린다.
  • $ git reset –mixed HEAD^
    • —> Local Repository 에서 Working Directory 까지 되돌린다.( Default가 mixed 이기 때문에, $ git reset HEAD^ 만 해도, mixed로 리셋해준다. )
  • $ git reset –soft HEAD^
    • —> Local Repository 에서 Staging Area 까지만 되돌린다.



2. git diff 그리고 git revert

  • $ git diff : 변경 내역들끼리 비교 결과를 보여준다.
  • 예를 들면, $ gitt diff 2845ce53054627b3(A) f7fe32715c4bd70511019613(B) 라고 입력한다.( 이 숫자는 git log를 통해 볼 수 있는 commit hash이다. - 그 버전의 고유 코드 같은 것 )
  • $ git diff branch이름 origin/branch이름 을 통해 원격 저장소와 로컬 저장소를 비교할 수도 있다.
  • $ git diff HEAD HEAD^ 를 통해, 최근 커밋과 바로 한 단계 이전 커밋을 비교할 수도 있다.
  • $ git revert : reset과 비슷하게 버전을 되돌려주는 역할을 한다.
  • 예를 들면, $ git revert 2845ce53054627b3381c9f2515dc7545cff2347b ( 이 숫자는 git log를 통해 볼 수 있는 commit hash이다. - 그 버전의 고유 코드 같은 것 )
  • reset 처럼 이전 버전으로 되돌리는 것이지만, 가장 큰 차이는 reset은 현재 버전부터 되돌리려는 버전까지의 모든 버전이사라지는데 revert는 현재 버전과, revert 하려는 버전 사이의 버전들이 사라지지 않는다.
  • 예를들면 1 2 3 4 5 6 7(HEAD) 버전이 있을 때, 7(HEAD)에서 3으로 reset 하면, 3(HEAD)가 되고 4 5 6 7은 사라진다. 그러나 revert를 통해 3으로 revert 하면, 1 2 3 4 5 6 7 8(HEAD = 3과 똑같은 내용임) 으로 새로 커밋된다.
  • -n 옵션을 이용하면 revert를 사용해도, commit을 남기지 않을 수 있다.






results matching ""

    No results matching ""