본문 바로가기
IT/Github

깃허브(github) commit 복원 및 복구 [되돌리기 예제]

by 베베야 2021. 8. 24.
728x90

로컬 PC에서 원격지 깃허브 서버로 dev브랜치로 commit을 진행하여

master 메인 브런치로 머지하는 작업을 진행해서 소스 관리를 진행합니다.

 

그런데 잘못된 내용이 배포되어서 이전 단계로 되돌려야 하는 경우가 있습니다.

이번 시간에는 깃허브 commit 히스토리를 활용한 복원,복구 방법에 대해서 상세히 알아보도록 하겠습니다.

 

먼저 깃허브 관련 툴을 설치해야하는데 이전 시간에 글을 참조해주세요.

 

깃허브(github) commit 히스토리 조회방법

깃허브를 사용하게되면 내 로컬 PC에서 commit(커밋)을 진행한 다음 원격지인 깃허브 서버로 소스 파일을 전송하는 방식을 진행하게됩니다. 이번시간에는 내 PC에 커밋 히스토리를 조회하는 방법

bebeya.tistory.com


준비작업이 끝났으면 내용을 진행하도록 하겠습니다.

commit 되돌리는 방법은 여러가지가 존재하지만 여기에서는 "git reser" 방법을 사용하겠습니다.

 

 

#master 브랜치 복원

1. 사전 준비하기

다음과 같이 로컬의 깃허브 데스크톱에서 3개의 commit 히스토리를 생성하기 위해 순서대로 3번의 commit을 진행 후 master로 머지를 진행합니다.

1번 파일 생성 후 dev -> mastercommit

2번 파일 생성 후 dev -> mastercommit

3번 파일 생성 후 dev -> mastercommit

확인합니다.

 

2. 깃 배쉬를 실행

깃 배쉬를 실행한 다음 cd 명령어를 이용해 깃허브 클론을 만든 위치로 커맨드를 이동합니다.

3. 히스토리 확인

로컬에서 git log --pretty=format:'%ci %H %s' 실행 후 되돌리고자 하는 시점의 히스토리 hash 값을 확인합니다.

 

4. 히스토리로 되돌리기

로컬에서 git reset --hard [되돌리고자 하는 시점의 히스토리 hash ]을 실행합니다.

3번파일까지 commit 되어있으니 3번파일이 commit 되기전의 2번파일까지만 있는 상태로 돌려보겠습니다.

-> git reset --hard d1605cb08b733a4a2ae0b35686a0cb04877056d2

 

이후 나의 깃허브 데스크탑 DEV클론 폴더를 가보시면 3번 파일이 사라진 것을 볼 수 있습니다

 

 

5. 로컬 수동 커밋

이어서 로컬에서 git commit -am 'reset commit'를 실행합니다

6. master 브랜치로 푸시

로컬에서 git push -f origin master를를 실행합니다.

2번파일까지 존재하는 나의 dev브랜치 클론 폴더를 -> 깃허브 서버의 master 브랜치에 명령어로 commit을 진행하는 과정입니다.

만약 이 작업이 깃 배쉬 명령어 툴을 실행하고 처음이라면 윈도우 창으로 3가지 질문을 요청에 맞게 입력해야 합니다.

1. 내가 commit 하고자 하는 레포지토리명

-> 여기서는 commit_test 가 되겠습니다.

2. 나의 원격지 깃허브 계정

3. 나의 원격지 깃허브 패스워드

 

이렇게 질문에 입력이 끝나면 아래와 같이 mastercommit이 진행됩니다.

이후 깃허브 서버의 master 브랜치에서 내용을 확인합니다.

3번 파일이 사라진 것을 확인할 수 있습니다.

 

그런데 깃허브 서버의 dev 브랜치로 가보시면 아직 3번 파일이 존재하고 있습니다.

따라서 DEV 브랜치에 있는 자료들도 히스토리를 돌리는 작업을 진행해야 합니다.


#dev 브랜치 복원

1. git bash를 실행합니다.

깃허브 서버의 master 데이터를 받기 위해 나의 로컬 PC에 새로운 폴더를 생성합니다.

여기서는 C:\github 폴더로 선택하겠습니다.(마스터 클론 진행)

폴더 생성 후에 깃배쉬에서 cd 명령어를 이용해서 해당 경로로 이동합니다.

 

 

2. git clone [저장소 URL] 커맨드 실행

깃허브 서버에서 해당 레포지터리의 URL을 복사합니다.

깃 버전에 따라 GUI 약간 다를 수도 있습니다.

이 복사한 URL을 가지고 다음과 같이 커맨드를 실행합니다.

이후 내 로컬 PC 저장소를 클론 한 경로 내부로 폴더로 이동하게 되면

1번과 2번 파일만 들어있는 master 레포지토리가 받아진 것을 확인할 수 있습니다.

이제 이 레포지토리를 dev로 변경하는 작업을 진행해야 합니다.

 

4. 레포지토리 변경

깃 배쉬에서 cd명령어를 통해서 레포지토리 경로까지 이동합니다.

이동해보면 해당 경로가 master 브랜치 라는 것을 우측에 (master) 표시로 알 수 있습니다.

 

이제 git checkout dev 커맨드 실행해서 1번, 2번, 3번이 있는 dev 레포지토리로 변경합니다.

명령어를 수행하니 브랜치가 dev로 변경되었고 해당 폴더로 접속하니 1,2,3번 파일이 다시 있는 dev 브랜치를 확인할 수 있습니다.

5. git reset 복원

이제 다시 [git reset]으로 commit 되돌리기를 진행해야 합니다.

현재 로컬의 C:\github\commit_test (dev) -> 깃허브서버 dev 레포지토리로 명령어로 덮어 씌우는 작업입니다.

(깃허브 데스크탑을 이용하면 최초 commit 전 정합성을 위해 깃허브 서버에 있는 dev 레포지토리 정보를 동기화 해오기 때문에 사용이 불가)

 

 

로컬에서 git log --pretty=format:'%ci %H %s' 실행 후 되돌리고자 하는 시점의 히스토리 hash 값을 확인합니다.

 

로컬에서 git reset --hard [되돌리고자 하는 시점의 히스토리 hash 값] 을 실행합니다.([]는 입력하지 않습니다.)

git reset --hard d1605cb08b733a4a2ae0b35686a0cb04877056d2

실행 3 파일이 생성되기 전으로 돌아온걸 확인합니다.

 

로컬에서 git commit -am 'reset commit'를를 실행합니다.(커멘드 로컬 커밋)

 

로컬에서 git push -f origin dev를 실행합니다.

여기서 dev는 개발 브랜치 명이니 생성한 개발 브랜치에 따라 달라질 수 있습니다.

원격지인 GitHub Enterprise에서에서 히스토리를 확인합니다.

3번 파일이 사라진 dev 브랜치를 확인할 수 있습니다.

 

이상으로 github(깃허브) commit을 되돌리는 복원, 복구 방법에 대해서 알아보았습니다.

반응형
그리드형

'IT > Github' 카테고리의 다른 글

깃허브(github) commit 히스토리 조회방법  (0) 2021.08.24

댓글