참고도서 : Do it! 지옥에서 온 문서 관리자 깃&깃허브 입문
git Windows 설치설명 : https://youtu.be/JKT9laOAPIs
작업 되돌리기
작업 트리에서 수정한 파일 되돌리기
1. "hello.txt"파일을 수정한 후 저장
$ vim hello.txt
2. 파일의 상태 확인
$ git status
노란색 글로 표시된 부분을 보면
작업 트리(디렉터리)의 변경사항을 취소하려면 restore 를 사용하라고 되어있음을 확인 할 수 있다.
3. 변경사항 취소하기
$ git restore hello.txt
위의 [수정후 파일내용]이미지에서 추가한 내용인 "3_three"가 삭제됨을 확인 할 수 있다.
스테이징 되돌리기
"작업 트리에서 수정한 파일 되돌리기"에서는 파일의 수정을 취소하고 원래대로 되돌리기를 했습니다. 여기에서는 스테이징을 취소하는 방법을 알아본다.
1. "hello2.txt"파일을 수정한 후 저장
$ vim hello2.txt
2. "hello2.txt"파일을 스테이지에 올린후 git status명령으로 파일의 상태확인
$ git add hello2.txt
$ git status
스테이지에서 내리려면 restore --staged 를 사용하라고 되어있음을 확인 할 수 있다.
3. 스테이지에서 내리는 명령어(깃 버전 2.23이후)
$ git restore --staged hello2.txt
4. git status로 파일의 상태확인
$ git status
파일이 스테이지에 올라가기 전(not staged)로 돌아온 것을 확인 가능함
스테이지에서 내리는 명령어(깃 버전 2.23이전)
$ git reset HEAD hello2.txt
최신 커밋 되돌리기
수정된 파일을 스테이징후 커밋까지 한상태에서 가장 마지막 커밋을 취소
1. "hello2.txt"파일을 수정한 후 저장
$ vim hello2.txt
2. 스테이징과 커밋을 함께 실행
$ git commit -am "message4"
3. 커밋 메시지가 'message4'인 커밋을 확인
$ git log
4. 최신 커밋으로 되돌리는 명령어
$ git reset HEAD^
HEAD^는 현재 HEAD가 가르키는 브랜치의 최신 커밋을 가르킴
5. 커밋이 취소됨을 확인
커밋했던 'message4'가 사라진 것을 확인 할 수 있다.
git reset 명령의 옵션 살펴보기
명령 설명 --soft HEAD^ 최근 커밋을 하기 전 상태로 작업트리를 되돌립니다. --mixed HEAD^ 최근 커밋과 스테이징을 하기전 상태로 작업 트리를 도돌립니다. 옵션없이 git reset명령을 사용할 경우 이 옵션을 기본으로 작동 합니다. --hard HEAD^ 최근 커밋과 스테이징, 파일 수정을 하기 전 상태로 작어 트리를 되돌립니다. 이 옵션으로 되돌린 내용은 복구할 수 없습니다.
특정 커밋으로 되돌리기
깃에는 파일을 수정하고 커밋하면서 저장한 버전들이 있는데 그 특정 버전으로 되돌려서 그 이후 버전을 삭제할 수도 있는데 특정커밋을 되돌릴경우 명령어는git reset를 사용한다.
1. "reset_Test.txt"파일을 수정한 후 저장
$ vim reset_Test.txt
2. 스테이지에 올린후 'R1'메시지와 함께 커밋
$ git add reset_Test.txt
$ git commit -m "R1"
R1 커밋까지 된것을 확인하고
3. "reset_Test.txt"파일을 한번더 수정한 후 'R2' 메시지와 함께 커밋
$ vim reset_Test.txt
$ git commit -a -m "R2"
4. 위와 같은 방법으로 'c' 를 추가후 'R3'메시지와 커밋, 'd'를 추가하여 'R4' 메시지와 함께 커밋하여 총 4번의 커밋을 실행 합니다.
$ git log
5. reset에서 커밋 해시를 사용해 되돌릴 경우
주의점 : 예를 들어 reset A를 입력한다면 이 명령은 A를 커밋을 리셋하는 것이 아니라 최근 커밋 A로 리셋 되므로, A 커밋을 삭제하는 것이아니고 A 커밋 이후에 만들었던 커밋을 삭제하고, A커밋으로 이동하게다는 의미가 된다.
'R2'커밋의 해시를 선택하여 복사해두고 이하의 명령어로 실행
4db39e71dbd1e29e95e0f4c52139d595602f4249 |
$ git reset --hard 복사한 커밋 해시
HEAD가 방금 복사해서 붙인 커밋 해시 위치로 옮겨 졌다고 합니다.
6. 로그목록으로 확인
$ git log
7. "reset_Test.txt" 파일을 확인
$ cat reset_Test.txt
R4 커밋과 R3커밋이 사라지고 R2메시지가 있는 두 번째 커밋이 최신 커밋으로 되었습니다.
커밋 삭제하지 않고 되돌리기
커밋으로 되돌릴경우 수정했던 내용을 삭제를 해도 되는 경우에는 get reset을 사용하면 되지만, 커밋을 되돌리더라도 취소한 커밋을 남겨 두어야 할 때가 있는데 이와 같은 경우에 사용
1. "reset_Test.txt"파일을 수정한 후 저장
$ vim reset_Test.txt
2. 'R5'라는 메시지와 함께 커밋
$ git commit -am "R5"
3. git log로 버전을 확인
$ git log
4. 가장 최근에 커밋한 R5 버전을 취소하고 R2로 돌아가려고 합니다.
revert 명령의 경우에는 revert명령 뒤에 취소하고자 하는 버전의 해시를 지정(여기에서는 메시지 R5의 커밋해시)
※ reset의 경우는 취소할 커밋의 해시가 아니라 되돌아갈 커밋 해시를 지정하고, revert의 경우에는 추소할 커밋 해시를 지정한다는 것
$ git revert 복사한 R5 커밋 해시
5. revert 명령을 실행시 편집기가 자동으로 나타나면서 커밋 메시지를 입력 할 수 있으며 입력후 저장합니다.
7. 'R5' 버전이 revert 되었는지 확인
$ git log
7. "reset_Test.txt" 파일을 확인
$ cat reset_Test.txt
앞에서 추가했던 'e'가 없어진 것을 볼 수 있습니다. 이렇게 revert 명령을 사용하면 버전에 있던 이력을 취소 할 수 있습니다.
'IT > 설계관련' 카테고리의 다른 글
【git】브랜치 관리하기 (0) | 2022.02.25 |
---|---|
【git】브랜치 생성, 병합, 삭제 (0) | 2022.02.24 |
【git】관리 및 커밋(commit) (0) | 2022.02.22 |
【git】git에서 자주 사용하는 리눅스 명령어 (0) | 2022.02.21 |
개발관련 사이트(일본) (0) | 2017.05.12 |