본문 바로가기
Program Development Tips/Git

[Git] Git Reset 후 돌아오는 방법: 안전하게 작업을 복구하는 가이드

by Maccrey Coding 2024. 9. 3.
반응형

 

Git은 강력한 버전 관리 도구이지만, 명령어 하나로 작업한 내용이 사라질 수 있어 초보자에게는 다소 부담스러울 수 있습니다.

그중 git reset은 가장 강력하면서도 위험할 수 있는 명령어 중 하나입니다.

잘못 사용하면 많은 변화를 되돌릴 수 있지만, 실수로 git reset을 사용한 후 어떻게 작업을 복구할 수 있는지 알면 대부분의 상황을 안전하게 처리할 수 있습니다.

이 글에서는 git reset 명령어를 실행한 후 변경사항을 복구하는 방법에 대해 설명하겠습니다.

1. git reset이란 무엇인가?

먼저, git reset 명령어가 무엇인지 이해하는 것이 중요합니다.

이 명령어는 로컬 리포지토리에서 커밋 이력을 수정하거나 삭제할 수 있는 도구입니다. git reset은 크게 세 가지 옵션을 사용할 수 있습니다.

  • --soft: 최근 커밋만 되돌리고, 변경 사항은 스테이징 상태로 유지합니다.
  • --mixed: 커밋과 스테이징된 변경 사항을 되돌리고, 파일의 변경 내용은 그대로 유지합니다.
  • --hard: 커밋, 스테이징된 변경 사항, 그리고 파일의 변경 내용까지 모두 되돌립니다. 위험한 명령어로, 복구가 어려울 수 있습니다.

2. git reset 후 복구하는 방법

2.1 git reflog 사용하기

git reset --hard를 사용했을 때, 가장 좋은 복구 방법은 git reflog를 사용하는 것입니다.

git reflog는 Git이 이전 커밋들의 기록을 추적한 로그입니다.

이 명령어를 사용하면 커밋을 실수로 삭제하거나 변경해도 쉽게 복구할 수 있습니다.

git reflog

git reflog 명령어를 입력하면, 다음과 같은 출력이 나옵니다.

a1b2c3d (HEAD -> main) HEAD@{0}: reset: moving to HEAD^
d4e5f6g HEAD@{1}: commit: Add new feature
h7i8j9k HEAD@{2}: commit: Fix bug in login module

여기서 HEAD@{1} 또는 HEAD@{2}와 같이 원하는 커밋을 선택해 복구할 수 있습니다.

2.2 특정 커밋으로 돌아가기

이제 실수로 되돌린 커밋으로 돌아가 봅시다. 만약 HEAD@{1} 커밋으로 돌아가려면, 다음 명령어를 사용합니다.

git reset --hard HEAD@{1}

이 명령어는 해당 커밋 시점으로 작업 디렉토리를 복구합니다.

2.3 git reset --soft 또는 git reset --mixed 후 복구

git reset --soft 또는 git reset --mixed를 사용한 경우, 파일의 변경 내용은 그대로 남아있으므로 복구가 간단합니다. git reset --soft로 인한 변경사항은 스테이징 영역에 그대로 남아있으므로, 추가적인 작업 없이 다시 커밋하면 됩니다.

git commit -m "복구된 커밋"

git reset --mixed로 인해 스테이징 영역이 초기화되었지만, 파일 변경 사항은 그대로이므로 git add 명령어를 사용하여 파일을 다시 스테이징하고 커밋할 수 있습니다.

git add .
git commit -m "복구된 커밋"

3. git revert를 고려하세요

커밋 이력을 변경하는 대신, 새로운 커밋을 통해 변경사항을 되돌리려면 git revert 명령어를 사용하는 것이 좋습니다.

이 명령어는 기존 커밋을 취소하는 새로운 커밋을 생성하여 이력을 유지하면서도 안전하게 되돌릴 수 있습니다.

git revert <커밋 ID>

이 명령어를 사용하면 기존 커밋을 삭제하지 않고도 작업을 되돌릴 수 있습니다.

 

Git의 강력한 기능인 git reset은 신중하게 사용해야 하지만, 실수로 잘못 사용했더라도 복구 방법이 있습니다.

git reflog를 사용해 이전 커밋으로 돌아가거나, git revert로 안전하게 커밋을 되돌릴 수 있습니다.

이러한 방법들을 이해하고 사용하면 Git을 더욱 효율적이고 안전하게 사용할 수 있습니다.

구독!! 공감과 댓글은 저에게 큰 힘이 됩니다.

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

 

반응형