Git 되돌리기 (부제: reset)
이번 시간은 reset에 대해 알아보자. reset에는 3가지 mode가 존재한다.
- Hard - discard all working copy changes
- Mixed - keep working copy but reset index
- Soft - keep all local changes
Hard reset mode는 Working Directory와 버전을 선택한 버전으로 되돌린다(재설정).
- 선택한 버전 이후의 버전은 없어진다.
Mixed reset mode는 Working Directory는 유지하고 index는 재설정한다.
- Working Directory는 유지되고 index는 재설정되었으므로 Uncommitted changes을 인식한다.
- 유지의 의미는 변경되지 않는 다는 것이다.
- 커밋한 소스코드에 보안에 영향을 줄 수 있는 secret key와 같은 정보가 존재하는 해당 커밋한 버전들을 모두 삭제하고 현재 작업 중인 working directory를 유지해야 하는 경우에 사용하면 좋다.
Soft reset mode는 모든 로컬 변경 사항을 유지한다.
Hard 와 Soft mode 만 이번에 예제를 통해 알아볼 것이다.
Try using reset : Hard mode
1. 먼저 hard mode 로 reset 하려는 버전을 우클릭한다. 그리고 Reset current branch to this commit 을 클릭한다.
2. Using mode : Hard - discard all working copy changes 를 선택하고 OK 클릭
3. 'Hard' reset mode 사용시 로컬 working copy의 변경사항과 index(staging area)를 모두 되돌릴 것이라는 경고창이 뜬다. Yes 를 클릭한다.
4. hard mode 결과, 선택한 버전이 최종 버전이 되고 선택한 버전 이후의 버전은 삭제되었다.
5. reset using hard mode 전의 README.md 파일과 wow.java 파일
6. reset using hard mode 후의 README.md 파일과 wow.java 파일
Try using reset : Mixed mode
1. 먼저 reset 버전을 우클릭한다. 그리고 Reset current branch to this commit 을 클릭한다.
2. Using mode : Mixed - keep working copy but reset index 를 선택하고 OK 클릭
3. reset using mixed mode 결과, 선택한 버전이 최종 버전이 되고 선택한 버전 이후의 버전은 삭제되었다. hard mode 와 다른 점은 'Uncommitted changes(커밋하지 않은 변경사항이 존재)' mixed mode 의 경우 index(버전)은 선택한 버전으로 재설정(reset)하지만, Working Directory는 reset 하지않고 커밋하지 않은 상태로 현재 파일을 유지(keep)하기 때문이다.
4. Working Directory의 파일은 reset using mixed mode 전후가 동일하다.
댓글
댓글 쓰기