1 minute read

Daily TODO

Daily Log

오늘은 git 브랜치를 착각해서 main 으로 push하는 사고가 있었다 (그러나 해결함!)

구글링 해보면 한국 블로거들은 보통 hard reset 쓰세요~ 하는데 본인은 이것에 아주 안좋은 기억이 있어서 소영님께 쓰지 말자고 말씀드렸다……

이제는 말할 수 있다 (git 대형사고)

reset --hard 에 어떤 안좋은 기억이 있었냐고 물을 것 같아서 작성하는 글입니다.

예전에 학교에서 팀프로젝트 마감일자를 며칠 안 남기고 메인으로 잘못 올려서 해당 명령어를 사용했었는데…… 맨 처음 git push한 상태로 돌아가서 파일이 몽땅 날라갔었다. 그때는 명령어를 잘 아는것도 아니었기에 아마 그 부분에서 어딘가 실수를 했던 것 같다. (사실 지금도 엄청 잘 안다고는 할 수 없지만, 당연히 그때보단 지금 가진 경험이 더 많으니까요)

그 당시에는 다른 분이 실수한 것도 아니고 내가 대형사고를 저질렀기 때문에 뭐 어떤 말 한마디도 안나오고 그냥 몇분동안 뇌가 깨끗해졌었다…… 정신차린 뒤에는 사과드렸다. 이때는 인텔리제이가 아니라 XCode를 썼었기때문에 pull 안해온 팀원분이 파일을 로컬에서 카톡으로 받아서 해결했던 기억이 있다… 혹시라도 이 글을 보신다면 그때는 정말 죄송했고 또 감사했습니다.

그래서 이번에는 어떻게 해결했나요?

아무튼 그래서 이번에 이 현상을 해결한 방법은 git revert였다.

git 로그를 찍어보면 예전에 커밋한 부분의 해시값이 나오는데 (commit [Hash_value] ... 이하 커밋 메시지) 되돌리고 싶은 시점의 해시값을 복사한다. 사실 커밋 메시지 가지고 revert해도 되는데 한글로 메시지 작성했으면 안되는 경우가 왕왕 있기도 하고 혹시 몰라서 커밋 해시값으로 revert 해주는게 낫다(고 알고 있습니다) git revert Hash_value를 해주면 로컬에서 커밋 이전 시점으로 돌아간다. 그럼 이제 그 시점으로 돌아간걸 push 해주면 된다. git push [local-location] [remote-branch-name]이런식으로…

그럼 로컬 파일도 당연히 그 시점으로 돌아가 있을텐데 (로컬에서 revert했으니까!) 인텔리제이는 로컬 히스토리 기능이 있으므로 로컬 히스토리에서 내가 작성했던 파일 찾아서 그 시점으로 되돌리면 된다.

그리고 더 좋은 방법이 있다면 의견을 주시면 감사하겠습니다.

Leave a comment