지지나

깃허브 커밋(Commit) 내역 특정 지점으로 돌아가기 feat. 유튜버 동빈나 본문

기획자의 프로그래밍 걸음마/Github

깃허브 커밋(Commit) 내역 특정 지점으로 돌아가기 feat. 유튜버 동빈나

Gygyna 2020. 9. 4. 23:19

이전 포스팅에서는 깃허브에서 my_module [Add] 소스를 로컬 컴퓨터에 다운받아 수정 후, my_module [Sub]로 다시 업로드 하는 것을 해 보았어요.

 

깃허브에서 시간의 순서대로 커밋된 내용을 볼 수 있는데요, 이렇게 하면 누가 언제 무엇을 변경하였는지 시간순으로 나와서 정말 보기 편리하답니다.

 

오늘은 깃에서 커밋 내역을 수정하는 방법에 대해서 알아보려고 합니다. 

유투버 동빈나쌤 강의로 공부하고 복습한 것을 포스팅했어요ㅎㅎ 정말 동빈나쌤 아니면 깃허브 어떻게 사용했을지 깜깜하네요ㅠㅠ

 

우선 깃 저장소의 프로젝트를 PC로 클론합니다.

주소를 복사해주고, 깃 저장소를 이미 로컬 PC에 클론되어 있다는 가정하에 진행합니다. (그게 아니라면 git pull을 이용해서 컴퓨터와 깃 저장소를 동일화하면 됩니다.)


이 상태에서 특정 지점으로 프로젝트 자체를 되돌리는 방법에 대해서 알아보겠습니다.

 

실습을 위해 소스 코드를 먼저 수정했는데요, mul 함수를 하나 추가했습니다.

 

그리고 이 변경사항을 add 해 staging area에 올리고 commit해 주었어요.

git status를 해보면 로컬 커밋이 발생했고, 원격지에 올리려면 push를 수행하라는 메세지가 나옵니다.

 

push까지 해주면 깃허브 저장소에 my_module [MUL] 이 반영되었구요.

 

그리고 이렇게 반영된 내역은 git log 명령으로 히스토리를 볼 수 있습니다.

**엔터를 치면 더 아래쪽 히스토리까지 볼 수 있어요!

**q를 입력하면 빠져나올 수 있습니다.

 

각각의 커밋은 해시값(노란숫자)으로 매칭되어 있습니다.

 

그렇다면 여기서 특정 단계로 되돌아가고 싶다면 어떻게 할까요?

 

 

맨 처음에 제가 올렸던 docs.txt 파일 단계로 돌아가고 싶다면, git reset --hard 해시값 명령을 입력하면 됩니다.

**hard 옵션은 뒤에 나오는 해시값의 커밋 지점 이후는 전부 지워버리겠다는 뜻이에요.

 

로컬 저장소를 보면 docs.txt 이후에 생성된 my_module 파이썬 파일은 없어진 것을 볼 수 있고, git log 명령으로도 재확인할 수 있어요.

 

 

다음으로 이 상태를 원격지 저장소인 깃허브에도 저장하려면 어떻게 할까요?

git push 명령을 해봐도 로컬 저장소와 깃허브 저장소 구성이 달라졌기 때문에 오류 메세지가 뜨게 됩니다.

 

이럴 땐 git push -f 명령으로 강제로 푸시를 진행해줍니다. 깃허브에도 동일하게 저장이 되고요.

docs.txt 파일만 덩그러니 남음

 

이렇게 깃허브에서 내가 원하는 커밋 단계로 돌아갈 수 있답니다. 

다음번에는 커밋 메세지 변경하는 방법에 대해서 알아보아요~

 

Disclaimer: 유투버 동빈나 선생님 강의를 듣고 복습하는 포스팅입니다. 동빈나쌤 정말 감사드려요!

Comments