Git 잘못 써서 오늘 했던 코드를 날려 먹었어요 ㅠㅠ

Sungmin·2024년 1월 8일
0

GIT

목록 보기
1/1
post-thumbnail

git 명령어를 잘못 써서 지금까지 해 왔던 코드를 날려 먹은 적이 있는가?

그게 나다. 오늘 그랬다. 오늘 작업을 완료 했는데(심지어 파일이 10개나 되었다) 실수로 작업한 것들을 날렸다. 스터디 카페에 있었는데 울고 싶었다.
이전 커밋으로 되돌릴 때 이전 커밋 앞에 있는 모든 커밋들은 사라지는 git reset --hard 명령어 때문이었다.

멘탈이 나갔지만, 정신을 가다듬고 사라진 커밋을 복구할 해결 방법을 구글에 검색해보았다.

git reflog란?

Reflog는 HEAD의 상태가 변하거나 HEAD가 참조한 branch의 상태가 변할 때를 추적하고 기록으로 남긴다. 그렇다면 무엇이 HEAD의 상태와 HEAD가 참조한 branch의 상태를 변화시키는 것인가?

git reflog가 추적하고 기록으로 저장하는 명령어들

다음 명령어들이 git reflog가 추적하는 것들이다.

  • git commit
  • git reset
  • git checkout
  • git merge
  • git rebase
  • git cherrypick
  • git pull

git reflog 사용법

git reflog와 사용하기 위한 명령어는 다음과 같다

git reflog show HEAD 

git reflog show HEAD 명령어와 같은 역할을 하지만 짧은 명령어는 다음과 같다.

git reflog

git reflog 명령어를 실행시키면 커밋 기록 뿐만 아니라 브랜치 업데이트 되는 상태까지 출력이 되는데 다음과 같은 화면이 나온다.

  • HEAD@{숫자} (0부터 시작) - 가장 작은 숫자가 가장 최신의 기록이다.
  • reset, commit, checkout - git reflog가 추적하고 기록한 git 명령어들이다.

내가 오늘 겪었던 일은 다음과 같다.

HEAD@{5} - 내가 작업하고 커밋한 내역이다.
HEAD@{4} - 착오로 git reset --hard를 써서 작업한 커밋을 날려먹었다.

날려먹은 커밋을 복구하기 다음과 같은 명령어를 실행했다.

git reflog # 사라진 커밋 기록 가져옴
git reset --hard <SHA hash> # 사라진 커밋 복구

HEAD@{0} - git reset --hard 70b4011로 사라진 커밋을 복구하였고 없어져버린 10개의 파일도 그대로 복구가 되었다..

git reset --hard를 잘못 쓴 덕분에 git reflog라는 것을 처음 알게 되었고 정말 유용하게 쓰게 될 것 같다.

[출처]

profile
Share everything that I like

0개의 댓글