Curl Up Black Cat

이미지출처: pixabay

이번에 작성하는 포스트는 Git 되돌리기에 관한 내용입니다

과거에 일어난 일을 되돌릴수 있다면 얼마나 좋을까요?

영화 백투더퓨처는 마틴박사가 발명한 타임머신 이라고 불리는 자동차를 타고 과거의 시간여행을 할 수 있습니다.

이미지출처: 자유아시아방송

아직까지 현실세계에서는 과거로 시간여행은 불가능하지만..
Git 에서는 과거로 돌아갈 수 있고 과거의 일어난 일을 되돌릴 수 있는 방법을 제공합니다.

과거의 일어난 일을 되돌리는 방법이 두가지가 있습니다.
바로 Reset 과 Revert 명령어를 사용하는 것입니다.
Reset 은 시간을 예전으로 되돌리는 것이고 Revert 는 특정 커밋을 없었던 일로 만듭니다.

1. Reset

앞에서 설명한대로 Reset 은 시간을 다시 맞추는 것입니다. 돌아갈려는 커밋 시점으로 레파지토리는 재설정되고 해당 커밋 이후의 이력은 사라집니다. 아래와 같이 사용합니다.

$ git reset <옵션> <돌아가고싶은 커밋 ID>
# 옵션을 적지 않으면 mixed 로 동작합니다.


옵션은 3가지(hard, mixed, soft)가 있습니다.

1) hard: 돌아가려는 이력 이후의 모든 변경 이력을 삭제 합니다.

2) mixed: 이력을 되돌리고 이후에 변경된 내용에 대해서는 남아 있지만 인덱스는 초기화 됩니다. 커밋을 하려면 add 명령어로 stage 에 반영하고 commit 해야 합니다.

3) soft: 돌아가려는 이력으로 되돌아 갔지만, 변경내용은 stage 에 반영되어 있는 상태입니다. 바로 다시 커밋 할 수 있는 상태로 남아 있는 것입니다.

위 명령어를 사용한다고해서 origin 은 변경되어 있지 않습니다.
--force 옵션을 주어 이럴땐 강제로 반영해야 하는데..
다른사람들과 레파지토리르 공유하고 있다면 무조건 하면 안되는 행동입니다.

$ git push -f origin <브랜치명>

 

2. Revert

Rever 는 특정 커밋을 없었던 일로 만드는 것입니다. Reset 과 다르게 커밋을 삭제하는 것이 아닌 커밋을 추가하는 방식입니다.
이전 이력은 그대로 있고, 되돌리려는 커밋만 되돌리는 방식입니다. 이전의 일은 기억하고 있지만 그 내용은 알지 못하는 것처럼 말이죠.
아래와 같이 사용합니다.

$ git revert <되돌릴 커밋>

되돌릴 커밋이 여러개라면 범위를 주어서 여러개를 선택할 수도 있습니다.
아래처럼요.

$ git revert 26634dd2..78652aa2

 

'💻 프로그래밍 > 🅶 Git' 카테고리의 다른 글

이미 push된 파일 .gitignore 적용하기  (0) 2021.08.09

+ Recent posts