GIT
으로 로컬저장소에 커밋된 파일들은 다른 작업을 진행 중이더라도 언제든지 이전에
기록한 파일의 버전으로 돌아갈 수 있습니다.
작업중인 파일에 문제가 생겼거나 버전을 롤백해야 하는 상황이 왔을 때 이전 버전으로
돌아가는 방법을 알아보겠습니다.
버전을 이동할 수 있는 checkout
명령어와는 조금 다릅니다.
commit
버전을 이동시키는 명령어commit
은 삭제 됩니다.branch
를 혼자 사용하거나 로컬저장소에서 사용 된다. ( 협업시 사용 비추 )git reset [이동할 커밋 ID]
# 커밋 ID는 자신이 이동할 커밋 버전의 ID를 적으면 됩니다.
git reset --soft [커밋 ID]
# 해당 커밋으로 이동할 때, 작업중인 워크 디렉터리와 스테이지 영역은 영향을 받지 않음
git reset --mixed [커밋 ID]
# 해당 커밋으로 이동할 때, 워크 디렉터리는 영향을 받지 않고 스테이지 영역은 되돌아갈 커밋과 동일해진다.
# reset 명령어의 기본 값이다.
git reset --hard [커밋 ID]
# 해당 커밋으로 이동할 때, 워크 디렉터리와 스테이지 영역 모두 되돌아갈 커밋과 동일해진다.
commit
버전을 없었던 일로 만드는 행위commit
파일에 영향을 주지 않습니다.revert
해야 충돌이 나지 않습니다.git revert [되돌릴 해시코드]
# 되돌릴 파일 버전의 해시코드를 입력합니다
1. reset
명령어를 사용해서 이전의 커밋 버전으로 이동 하기
--hard 명령어는 커밋을 이동할 때, 현재 버전에 있는 working directory
와 staging area
영역도 이동할 커밋에 영역으로 변경합니다.
1. 명령어를 사용하기 이전에 커밋의 개수를 확인하고 적다면 늘려줍니다.
저같은 경우에는 커밋이 2개만 있기 때문에 예제를 위해 2개를 더 추가하겠습니다.
2. 현재 커밋에서 R3 modified 메세지가 있는 커밋으로 revert
이동을 했을 때 변화를
확인 해보겠습니다.
reset
과 다른점은, 커밋 ID
를 적을 때, 이동할 커밋 ID
가 아니라, 자신의 버전을
되돌릴 커밋 ID
를 적어야 합니다.
3. 현재 revert
한 버전의 파일들이 059e44
커밋 버전으로 되돌아갔는지 확인
revert
를 사용할 때, 가장 중요한 것은 현재 버전을 이전 버전으로 되돌리기 때문에 현재
위치에서 바로 전 버전이 아니라, 한참 이전의 버전으로 바로 돌아가게 되면 충돌이 나요.
항상 사용할 때 역순으로 사용해야 합니다.
1. revert
를 사용해서 현재 버전에서 이전 버전이 아닌, 2단계 이전 버전으로 되돌리기
2. revert
를 사용해서 현재 버전에서 이전 버전이 아닌, 2단계 이전 버전으로 되돌리기
번외. 역순으로 되돌리지 않고, 한 번에 e724be
버전으로 revert
하면 오류가 발생합니다.
실무에서 conflict오류가 생기면 처리하기 매우 어렵다고 합니다. 꼭 역순으로 사용 합시다.
아래 같은 오류를 해결하려면, status
상태를 확인하고 add
해준 후 커밋을 하면 됩니다.