Git reset 명령 테스트




Git reset --soft 옵션


1. Working 영역에 파일 생성 및 Staging 상태로 변경.


2. 파일을 저장소에 확정(Commit) 지으며, 최종 Commit 히스토리를 확인한 결과 "37c9a0478....5ee5" 가 출력된다.


3. "git reset --soft" 명령을 통해 생성된 저장소 내역을 초기화 시킨다.



- 아래 결과를 통해 "git reset --soft" 옵션에 대한 다음과 같은 특징을 알 수 있다.


1. Working 영역에는 반영되지 않는다.


2. "git ls-files -s" 결과에서와 같이 출력된 Staging 리스트 상에서 File1 파일을 확인할 수 있다.


3. "git log" 명령을 통해 최종 Commit 히스토리를 확인한 결과 위에서 출력한 Staging 리스트와 다르다는것을 알 수 있다.


4. 최종 HEAD 정보를 확인해보아도 같은 결과를 나타내며, 해당 파일을 Commit 대상으로 바라보고 있다.



- 정리하면, --soft 옵션은 Working 영역과 Staging 영역에 반영되지 않으며, Repository 영역에만 반영된다.








Git reset --mixed 옵션


- 아래 결과를 통해 "git reset --mixed" 옵션에 대한 다음과 같은 특징을 알 수 있다.


1. Working 영역에는 반영되지 않는다.


2. "git ls-files -s" 결과에서와 같이 출력된 Staging 리스트 상에서 File1 파일을 확인할 수 없다즉, Staging 영역에 반영되었다는것을 말한다.


3. "git log" 명령을 통해 최종 Commit 히스토리를 확인한 결과 위에서 출력한 Staging 리스트와 동일하다.


4. Staging 영역에 반영되었으므로, 파일은 현재 Untacked 상태를 나타낸다.



- 정리하면, --mixed 옵션은 Working 영역에 반영되지 않으며, Staging  Repository 영역에만 반영된다.








Git reset --hard 옵션


- 아래 결과를 통해 "git reset --hard" 옵션에 대한 다음과 같은 특징을 알 수 있다.


1. Working 영역에 반영된다.(파일이 존재하지 않는다.)


2. "git ls-files -s" 결과에서와 같이 출력된 Staging 리스트 상에서 File1 파일을 확인할 수 없다. 즉, Staging 영역에 반영되었다는것을 말한다.


3. "git log" 명령을 통해 최종 Commit 히스토리를 확인한 결과 위에서 출력한 Staging 리스트와 동일하다.


4. 파일 자체가 Working 영역에 존재하지 않으므로, 당연히 현재 상태 또한 존재하지 않는다.



- 정리하면, --hard 옵션은 모든 영역(Working, Staging, Repository)에 반영된다.