유용한 정보/개발툴-유틸리티

Git - git revert, git reset - 이전 버전으로 돌아가기

서버이야기 2023. 8. 23. 09:00

Git - git revert, git reset  - 이전 버전으로 돌아가기

 

 

 

이번 포스팅에서는 Git 에서 이전 버전으로 돌아가는 방법에 대해서 알아보도록 하겠습니다

 

 

 

 

 

   이전글

 

 

 

 

 

https://server-talk.tistory.com/552 - VCS(Version Control System)과 Git

 

 

https://server-talk.tistory.com/553 - Git 설치하기 - Windows

 

 

https://server-talk.tistory.com/554 - Git - git init - 프로젝트 관리 설정하기

 

 

https://server-talk.tistory.com/555 - Git - git add - 파일추가하기

 

 

https://server-talk.tistory.com/556 - Git - git commit - 버전만들기

 

 

https://server-talk.tistory.com/557 - Git - 버전관리 처리과정

 

 

https://server-talk.tistory.com/558 - Git - git log, git diff - 변경사항 확인하기

 

 

 

 

 

   Git - 이전버전 변경 이해하기

 

 

 

 

 

 

소스코드를 작성하다가 보면은 이전내용으로 변경해야 되는경우가 있습니다 이때 GIT에서 이전 버전으로 돌아갈때 사용되는 방법은 revert 와 reset 으로 나누어 집니다.

 

 

 

 

 

 

revert 는 1번에서 5번까지 있는 Commit에서 3번의 Commit의 내용으로 변경할때 새로운 Commit 버전을 생성하고 3번의 Commit 버전으로 변경되게 됩니다.

 

 

 

 

 

 

그러나 reset 는 1번에서 5번가지 잇는 Commit 에서 3번 Commit의 내용으로 변경하면 5번과 4번 Commit 내용은 삭제되고 3번의 Commit 버전으로 변경되게 됩니다.

 

 

 

 

 

   Git - 버전 만들기

 

 

 

 

 

1. Git - commit ver 1

 

echo "apple soft image" > code1_text.txt
git add .
git commit -m "code1_text ver1"

 

 

 

 

2. Git - commit ver 2

 

echo "banana soft image" > code2_text.txt
git add .
git commit -m "code2_text ver2"

 

 

 

 

3. Git - commit ver 3

 

echo "melon soft image" > code3_text.txt
git add .
git commit -m "code3_text ver3"

 

 

 

 

4. Git - commit ver 4

 

echo "grape soft image" > code4_text.txt
git add .
git commit -m "code4_text ver4"

 

 

 

 

5. Git - commit ver 5

 

echo "strawberry soft image" > code5_text.txt
git add .
git commit -m "code5_text ver5"

 

 

 

 

 

   Git - 이전 버전으로 돌아가기 - revert

 

 

 

 

 

1. 커밋 ID 확인하기

 

$ git log
commit 812cbf8aef05b7f381cb9e91ba34118937f8421f (HEAD -> master)
Author: server-talk <server@email.com>
Date:   Wed Nov 2 19:48:28 2022 +0900

    Revert "code5_text ver5"

    This reverts commit 3d2c5c68797a24e31b9511afc25b548d8f27b771.

commit 3d2c5c68797a24e31b9511afc25b548d8f27b771
Author: server-talk <server@email.com>
Date:   Wed Nov 2 19:48:18 2022 +0900

    code5_text ver5

commit 42a240fcfe9f8c487ae943dfda6100a0503f6e3b
Author: server-talk <server@email.com>
Date:   Wed Nov 2 19:48:15 2022 +0900

    code4_text ver4

commit 66045f3590126c4088851b2ddc80d1200b3bffde
Author: server-talk <server@email.com>
Date:   Wed Nov 2 19:48:12 2022 +0900

    code3_text ver3

commit ffa43ab9fdf3b6b381dc801883f80ef26112a481
Author: server-talk <server@email.com>
Date:   Wed Nov 2 19:48:08 2022 +0900

    code2_text ver2

commit 1164f68bf6b990a921ea7a20eb8e4f5e0fd8ac08
Author: server-talk <server@email.com>
Date:   Wed Nov 2 19:48:05 2022 +0900

    code1_text ver1

 

 

 

 

2. Git - 이전버전으로 돌아가기 - revert

 

사용법 : git revert [Commit ID]

 

$ git revert 3d2c5c68797a24e31b9511afc25b548d8f27b771

 

위에서 조회한 Commit ID 로 revert를 사용하여 변경할 Commit ID를 지정합니다.

 

 

 

 

 

   Git - 이전 버전으로 돌아가기 - reset

 

 

 

 

1. Git - reset hard : index 취소(add하기 전 상태, unstaged 상태), 워킹 디렉토리 파일 삭제

 

 

사용법 : git reset --hard [Commit ID]

 

$ git reset --hard 3d2c5c68797a24e31b9511afc25b548d8f27b771
HEAD is now at 3d2c5c6 code5_text ver5

 

 

 

 

2. Git - reset soft : index 보존, 워킹 디렉토리 파일 보존

 

사용법 : git  reset --soft [Commit ID]

 

$ git reset --soft 66045f3590126c4088851b2ddc80d1200b3bffde

 

index 보존, 워킹 디렉토리 파일 보존

 

 

 

 

3. Git - reset mixed : index 취소(add하기 전 상태, unstaged 상태), 워킹 디렉토리 파일 보존(기본 옵션)

 

사용법 : git reset --mixed [Commit ID]

 

$ git reset --mixed ffa43ab9fdf3b6b381dc801883f80ef26112a481