Step5. 작업 되돌리기

- 스테이지에 올렸던 파일을 내리거나, 커밋을 취소하는 등 각 단계로 돌아갈 수 있다

 

    5-1. 작업 트리에서 수정한 파일 되돌리기 - git check out

        - 수정한 파일이 정상적으로 동작하지 않을 때, 가장 최신 버전의 상태로 되돌려야 할 때

          수천 줄이 넘는 소스를 쉽게 취소할 수 있다.

        경고) checkout으로 되돌린 내용을 다시 복구할 수는 없다.

hello.txt 3 -> three로 수정

     

Changes not staged for commit: 스테이지에 올라가지 않은 상태
책에는 use "git checkout -- <file>..." to discard ...라고 나와 있지만,

내 화면에는 use "git restore <file>..." to discard ...라고 나와 있다.   

 

git checkout --<file>
git restore <file>

    5-2. 스테이징 되돌리기 - git reset HEAD 파일 이름

hello2.txt에 b,c,d 추가

 

책에는 use "git reset HEAD <file>... to unstage" 라고 나와 있지만,        

내 화면에는 use "git reset --staged <file>... to unstage" 라고 나와 있다.

git reset HEAD <file>... 
git restore --staged <file>...

    5-3. 최신 커밋 되돌리기 - git reset HEAD^

hello2.txt에 e 추가하기
message 4로 커밋하기
message4가 없어짐

Unstaged changes after reset: 커밋이 취소되고, 스테이지에서도 내려졌다.

HEAD^: 현재 HEAD가 가리키는 브랜치의 최신 커밋(HEAD -> mater)

git restore --옵션을 찾아봤는데.. 아직 내가 모르는 건지 없는 건지 모르겠다
https://git-scm.com/docs/git-restore

 

[get reset 명령의 옵션]

    5-4. 특정 커밋으로 되돌리기 - git reset 커밋 해시

       - 'git reset HEAD^'으로 최신 커밋으로 되돌릴 수도 있지만,

       - 'git reset 커밋 해시'으로 특정 버전으로 되돌린 다음 그 이후의 버전들 삭제할 수 있다.

   

rev.txt를 만들고 스테이지에 올린 후 "R1" 메시지와 함께 커밋을 한다.
rev.txt에 b를 추가해 수정한 후 스테이징 및 "R2" 메시지와 함께 커밋을 한다.
rev.txt에 c를 추가해 수정한 후 "R3" 메시지와 함께 스테이징과 커밋을(-a -m) 한다.
rev.txt에 d를 추가해 수정한 후 "R4" 메시지와 함께 스테이징과 커밋을(-a -m) 한다.
지금까지 만든 4개의 커밋과 커밋 해시

입력한 커밋 해시가 리셋되는 것이 아니라, 최근 커밋을 입력한 커밋 해시로 리셋한다.

입력한 커밋 해시 이후의 커밋을 삭제하고, 이 커밋 해시로 이동하겠다는 의미이다.
HEAD is now at ... : 가장 최근 커밋이 입력한 해시 위치로 옮겨졌다.

확인하기

    5-5. 커밋 삭제하지 않고 되돌리기 - git revert

rev.txt에 e를 추가해 수정한 후 "R5" 메시지와 함께 스테이징과 커밋을(-am) 한다     
현재까지의 버전 확인하기

4. 에서는 R2 커밋으로 되돌리기 위해 git reset --hard [R2 커밋 해시]를 했다면,

revert의 경우에는 취소하려고 하는 버전이 와야 하므로

git revert [R5 커밋 해시]로 지정한다.

 

문서 위에 revert 하면서 추가로 남겨둘 내용을 입력하고 저장한다

기존의 R5가 사라지진 않았지만, R5 버전을 지우는 대신

R5에서 변경했던 이력을 취소한 새 커밋을 만든 것이다.

+ Recent posts