홍차의 미로찾기

[git] git 명령어 - revert, reset 본문

프로그래밍/GIT

[git] git 명령어 - revert, reset

홍차안디 2024. 7. 9. 02:46
반응형

[git] git 설정 프로세스 모음

 

 

revert

원하는 commit 시점으로 되돌림. 단, 해당 커밋을 거꾸로 실행. + revert 커밋이 추가

ex) a라는 파일을 해당 시점에 추가 후 → revert 실행 → a라는 파일만 사라짐! -> a라는 파일이 사라지는 커밋 건 추가

reset

원하는 commit 시점으로 돌아감 (이후 내역은 삭제)

 

 

 


 

 

우선, 두 개의 commit 을 진행했습니다.

  1. first commit → test.txt 파일 추가
  2. second commit → test2.txt 파일 추가
# git commit 목록 조회
git log

위 명령어를 실행하면 아래와 같이 commit 목록이 조회됩니다.

현재 두개의 commit 건이 있습니다.

git log 실행 - 두 개의 커밋 존재

 

revert

 

revert 는 과거 시점으로 돌아간뒤 해당 커밋을 거꾸로 되돌립니다. 그리고 commit 한 줄이 추가됩니다.

 

현재 프로젝트에서 ‘first commit’ 건을 거꾸로 되돌려보겠습니다.

git log로 조회된 해시값을 이용해 ‘first commit’을 revert 합니다

# 'first commit' 건을 되돌리기 (해시값은 앞 일부만 작성가능)
git revert 157424e3940

 

해당 명령어를 실행하면 자동으로 commit message vi 화면이 나옵니다.

commit message는 자동으로 ‘revert ~’로 출력됩니다.

git revert commit message

 

 

commit message 저장 후, 프로젝트를 확인하면 ‘test.txt’ 파일은 사라지고 ‘second commit’ 내용만 남아있습니다.

git revert 이후 프로젝트 파일 내용

 

git log 명령어를 이용해서 commit 목록을 확인해보면 새로운 revert 커밋이 하나 추가되어 있습니다.

 

[참고]

위 내용에는 revert 이후 자동으로 commit이 됩니다.

하지만 revert 후 변경사항을 적용해서 commit하고 싶을 수도 있습니다.

그럴때는 아래의 명령어를 이용합니다.

# commit 하지 않고 revert
git revert --no-commit (되돌릴 commit 해시값)

# 위에 evert한 것 취소
git reset --hard

 

 

reset

reset 명령어는 원하는 commit 시점으로 돌아가는 명령어 입니다. 해당 시점으로 되돌아가면 그 시점 이후의 커밋 목록은 삭제됩니다.

특정 시점의 commit을 거꾸로 실행하는 revert와는 다르게, reset은 특정 시점으로 되돌아갑니다.

 

 

‘first commit’ 내역으로 reset해보겠습니다.

현재 프로젝트에는 test2.txt 파일만 존재합니다.

project 상태

 

git log 명령어를 호출하면 3개의 커밋 건이 있습니다.

git log 상태

 

이제 'first commit' 커밋으로 돌아가는 명령어를 호출합니다.

 # 특정 시점으로 돌아가고 이후 commit 내역 삭제
 git reset --hard 157424e3940fba1c8

 

project에는 test2.txt 파일은 사라지고, test.txt 파일만 남았습니다.

reset 후 project 상태

 

`git log` 명령어를 호출해보면, reset 한 commit건만 남고 이후 commit 내용을 모두 사라진 것을 볼 수 있습니다.

reset 이후 git log

반응형
Comments