03 커밋시점 되돌리기 (VS code, SourceTree)
(Visual studio code, sourcetree, Gitbash 미리 설치해둘것)
Git에서 작업했던 커밋(시점)으로 돌아가는 방식은 두가지가 있다
1) Reset 원하는 시점으로 돌아가고 이후 커밋들은 삭제됨
2) Revert 원하는 시점의 커밋을 취소하는 커밋이 생성됨
1. VS code 사용하기
1) reset
커밋 내역 확인하는 방법
git log
j나 방향커서를 이용해서 로그를 확인하는데 최신순으로 정렬해서 나온다
아래 노란색에서 보이는 숫자와 문자 조합이 커밋 해시이다.
확인 후에는 :q를 사용해서 로그내역 밖으로 빠져나감
커밋 해시의 일부 또는 전부를 복사해서 아래 명령어를 쳐준다.
git reset --hard (커밋 해시 복붙)
그리고 나서 소스트리를 확인하면 원하는 시점으로 리셋되고 그 이후 커밋이 삭제된 내용 확인할 수 있음.
또는 git status로 현재 상태 확인가능
변경 내용이 바로 보이지 않을때는 새 탭을 열어주고 돌아오거나 F5를 눌러주면 새로고침된다.
2) revert
(1) 단순하게 revert하면서 commit하기
내가 원하는 시점을 확인하기
log화면이나 SourceTree에서 확인할 수 있다.
git revert (커밋 해시)
이렇게 적어주고 나면 어떤 변동 사항을 확인할 수 있는 VI입력 모드가 나오는데 거기서 따로 변동사항 없이 저장하려면 저장하고 나오는 :wq 명령어를 쳐주고 소스트리를 확인하면 새로운 시점이 생성됨을 아래처럼 확인할 수 있다.
reset과는 다르게 revert라는 것이 생성되어 있음을 확인할 수 있다.
Add team Cheetas나 Add George to Tigers를 건너뛰고 그 앞 내용만 revert할 수 있어서 유용함.
그리고 revert를 하기 전인 시점으로 reset하면 되돌릴 수 있기 때문에 reset보다 간편하게 사용할 수 있다!
(2) commit없이 revert하기
git revert --no-commit (커밋 해시)
이렇게 revert한 후에 다른 작업을 더 해주고 커밋할 수 있다.
+참고사항
간단히 .git 폴더를 다른 폴더에 복사 (백업해둠) 해둔다음
현재 시점에서 그때 시점으로 돌아가고 싶을때 그 백업파일로 대체해주면 되지만 매우 귀찮고 비효율적임
그 이유는 이렇게 파일 변경시 소스트리에는 변경 시점이 반영되어 있지만 VS code에서 보면 변화들이 적용되지 않은것처럼 보이기 때문에 이럴때는 소스트리상 마지막 시점의 커밋으로 reset해주는 듯한 동작을 해주어야만 제대로 반영됨.
위 화면에서 아래 커밋을 보면 VS code git log화면에서 확인했던 해시를 바로 확인할 수 있다. (참고)
거기서 해시 확인해서 명령어를 쳐주는 방법도 있고 또는
git reset --hard
이렇게만 입력할 경우 마지막 커밋 시점으로 리셋하기때문에 이 명령어를 쳐주고 마무리하면 된다.
현업에서 사용하지 않는 방법이나 알고 지나가기로 하자.
2. SourceTree 사용하기
1) reset
원하는 커밋에서 우클릭하여 "이 커밋까지 현재 브랜치를 초기화"를 선택
2) revert
원하는 커밋에서 우클릭하여 "커밋되돌리기" 선택
이와같이 소스트리에서 매우 간단하게 작업이 가능하다
얄팍한 코딩사전 [깃 끝판왕 강좌] 제대로 파는 Git&GitHub 강좌를 보고 정리한 내용입니다~!