Git - 버전 이동하기

Chooooo·2022년 9월 20일
0

Git

목록 보기
3/15
post-thumbnail

인프런 - 제대로 파는 Git & Github - by 얄코


지난 강의까지 실습들을 성공적으로 진행했다면 커밋 내역들이 쌓여있을 것이다.

이 커밋(commit)이라는 것들 하나하나가 하나의 버전이라고 보면 돼 메세지와 함께 적어서 커밋하는 것은 해당 버전마다 작업한 것을 적어서 꼬리표로 달아놓은거야. 이렇게 시간 순으로 쌓인 커밋 내역들은 프로젝트를 원하는 과거 시점으로 돌릴 수 있어

Git에서 이전 버전으로(과거로) 돌아가는 두 가지 방식

🎈 reset

reset은 말 그대로 시간을 과거로 되돌리는 것이다. 만약 한 단계 전의 시점(버전)으로 되돌리려면 해당 버전으로 돌아간 다음 이후 행적은 히스토리에서 지워버리는 것이다.

🎈 revert

revert는 한 단계 전의 시점(버전)으로 되돌리려면 해당 commit을 삭제하는게 아니라 해당 commit의 변화를 거꾸로 수행하는 commit을 추가한다. 현재 버전에서 추가한게 있으면 삭제하고 변경한게 있으면 그것을 반대로 수행하는 것이다. 그래서 결과적으로 이전 commit으로 되돌아가게 된다.

  • 해당 버전을 되돌렸다는 것을 기록으로 남길 필요하 있을 때 revert를 사용하면 좋아(reset방식은 이후 시점의 기록들을 그냥 지워버리기 때문)
  • 그리고 결정적인 이유는 딱 하나의 버전(commit)에서 실행했던 내용만 취소해야 하는 경우 revert를 사용하는 것이다!

또한 개발자들은 Git을 사용해서 코드를 공유하고 협업하는데 한 번 공유공간에 올라간 내역을 reset해버리면 협업시 문제가 발생한다. 그걸 기반으로 작업한 다른 사람들의 코드와 심각한 충돌을 일으키게 된다. 때문에, 한 번 공유가 된 커밋들은 revert를 이용해서 되돌려야 한다!!!
(보통 revert로 되돌림 😚😚)

reset, revert 사용 방법

reset 사용해서 이전 버전으로 돌아가기

먼저 git log를 통해 커밋 내역을 확인해보자
이전 시점으로 돌아갈 것인데... reset을 할 때는 되돌아갈 버전(commit)의 커밋 해시가 필요해
그래서 git log를 통해 커밋 내역 옆에 해시를 복사해서 사용할꺼야 (전부 복사해도 되고 앞부분 몇개만 복사해서 해도 돼)

🎈 git reset --hard 커밋해시
이제 이전 버전(원했던 버전)으로 돌아갔다는 표시가 떴다.
현재까지의 커밋을 복구한 후 다시 git log, git status로 상태를 확인하자

🎈 git reset --hard

  • 뒤에 커밋 해시를 붙이지 않으면 마지막 커밋을 가리킴(마지막 커밋으로 이동)

💡 뒤에 커밋 해시가 없으면 마지막 커밋을 가리킴


revert를 사용해서 이전 버전으로 돌아가기

revert는 되돌릴 커밋. 즉 취소할 커밋의 해시를 이용해야해

🎈 git revert 되돌릴 커밋 해시

  • :wq로 커밋 메세지 저장

이렇게 하면 해당 커밋(취소할 커밋)을 반대로 실행하는 커밋 한개가 새로 생기게 돼 (원상태 복구)

만약 revert를 할 때 충돌이 발생한다면...
해당 오류 내역을 통해 하라는 대로 진행하자
ex)

  • git rm leopards.yaml로 Git에서 해당 파일 삭제
  • git revert --continue로 마무리
  • :wq로 커밋 메세지 저장

commit해버리지 않고 revert하기

git revert --no-commit 되돌릴 커밋 해시
즉 이렇게 명령어를 수행하면 해당 커밋을 되돌리긴 하는데 커밋은 되지 않아! 다른 변화도 함께 하고 싶을 때 사용하는 명령어야!

  • 원하는 다른 작업을 추가한 다음 함께 커밋
  • 취소하려면(아직 커밋되지 않은 것들을 그냥 다 지우고 마지막 커밋 상태로 되돌아 가기 위해) git reset --hard
    git reset --hard아직 커밋되지 않은 것들을 다 지우고 마지막 커밋의 상태로 되돌아가고 싶을 때 사용

소스트리(SourceTree)로 진행

변경사항 만들어서 커밋하고 이전 버전으로 되돌아가는.. 현재까지 배운 것을 소스트리로 진행해보자.

변경사항 만들고 커밋하기

  • leopards.yaml 삭제
  • .gitignore에 *.config 추가
  • hello.txt 추가 (내용 자유)
  • 커밋 메시지: Commit with SourceTree

해당 변경사항들을 모두 스테이지에 올리기버튼을 통해 git add .과정을 진행 (=)
그리고 좌측 상단에 커밋 버튼을 클릭 후 아래 커밋 메세지를 입력한 후에 commit을 눌러주면 변경사항 만들고 커밋하는 과정이 끝나!

소스트리로 revert진행

원하는 시점의 커밋에 우클릭 후 커밋 되돌리기 클릭 그러면 해당 커밋의 변경사항을 되돌리는 커밋이 생성 돼! (매우 간단!)

revert시 일어나는 충돌을 소스트리에서도 해결하는 방법
충돌이 일어남을 알려주는 경고창이 뜬다면

스테이지 되지 않은 파일이 있을꺼야! 해당 파일 우클릭 후 충돌 해결에서 저장소 것을 선택하면 돼

그 후 메세지를 입력 후 커밋하면 완료!

소스트리로 reset진행

되돌리고 싶은 시점의 커밋에 우클릭 후 이 커밋까지 현재 브랜치를 초기화를 클릭 후 Hard를 통해 확인 누르면 끝!

profile
back-end, 지속 성장 가능한 개발자를 향하여

0개의 댓글