본문 바로가기

Tools

[Git] revert / reset

commit 시점을 이용해서

다시 파일을 돌릴 수 있는 대표적 기능이다.

'얄팍한 코딩사전'이 많이 도움이 되었다.

 

1. revert

 

실수 등으로 인해 최근 commit 을 취소하고 싶을 때 이용할 수 있다.

$git revert <취소할 log ID> 로 사용한다.

먼저

$git log --oneline 등의 log 조회 명령어로(2번에 다른 것도 설명함)

commit log 를 확인한다.

 

* One class 를 추가하면서

"one"이라는 commit 을 작성했다.

그런데, 만약 One class 가 잘못되었다면?

지금 commit 을 취소하고 싶을 것이다.

 

이 때 취소할 log ID와 같이 revert해준다.

$git revert <ID>

$git revert <id>..<id>

*위 처럼 지정하면 해당 범위 모두 취소

 

진행하고 commit 하고 나면

revert 정보가 따로 생성이 됩니다.

이게 가장 큰 특징이라고 합니다.

 

이후 상태확인 후 작업을 이어나가면 된다.

 

**아래는 revert 시 발생됐던 오류. 추후 해결 예정.

progress 실행 중 탈출법을 모르겠다....

 

 

 

 

2. reset

 

*

--hard : 복구 된 이력 이후 내용 모두 삭제 및 초기화

--soft : 복구된 이력 이후 내용을 모두 유지

--mixed : 복구이력 내용유지, 인덱스초기화, 변경내용 추가가능(add)

 

git reset 기능은 지정한 commit 시점 이후의 log 를 모두 삭제하는 기능이다.

복구할 수 없기 때문에 매우 조심히 사용해야 한다.

 

2-1. 먼저 log 를 조회해본다.

 

$git log --oneline

혹은

$git log --oneline --graph

$git log --oneline --graph --decorate --all

등으로 확인 가능하다.

 

commit 메시지를 통해 어떤 시점 이후의 기록을 삭제할지 정한 후

보존하고 싶은 마지막 commit 로그를 복사한다. (7개 문자열)

$git reset <보존하고 싶은 범위까지의 ID>

아래처럼 명령해주면 바로 반영된다.

 

다시 한 번  log 를 조회해보면

명령한 ID 이후의 log는 모두 없어져있다.

 

 

이후 $git status 로 상태를 조회하여 다시 작업을 해준다.