본문 바로가기

Project Log/RoomieSeoul

[git] 깃 만지다가 파일 날아간 후기

때는 바야흐로... 다음 api를 써서 지도 컴포넌트를 만든 후 어느 때와 같이 커밋하고 깃 헙에 바로 푸시하면서 api키가 들어있는 파일까지 푸시한 것을 알아차렸다. 그래서 파일을 푸시하기 전 상태로 커밋을 되돌렸다. 그 상태에서 로컬에서 파일을 수정하고 로컬에서만 commit 하다가 원격까지 푸시하려고 하다 보니 원격 저장소와 로컬 파일이 충돌이 났다. 충돌이 난 것을 병합하기 위해 로컬 파일을 stash를 하고 병합하라기에 stash 하고 병합하니 성공!

그런데... 병합 전 로컬의 작성했던 커밋 내용과 파일이 모두 날아간 것을 발견...ㅎㅎㅎ 어제 새벽에 만들었던 메인 페이지 코드와 기타 코드가 가 모두 날아가서 만들기 이전 상태로 되돌아와 있었다. 눼...?

 

순간 머릿속이 하얘졌는데 다행히 깃을 쓰다가 이런 일이 종종 발생하는 건지 복구할 수 있는 방법이 나와있었다. 먼저 터미널에서 아래 명령 으를 쳐서 로그를 찾아낸 뒤 해당 커밋으로 되돌렸다. 아니 그런데.. 분명히 나는 메인 페이지를 만들고 메인 페이지에 대한 컴포넌트를 모두 다 커밋했다고 생각했는데 하다 만 건지... 커밋을 되돌려봐도 완성 파일의 20%밖에 파일이 없다 ㅠㅠ 불행 중 다행인지 포스트 관련한 컴포넌트들은 다 살아 나왔는데... 하...

//깃 로그 확인하기
$git reflog

//로그를 확인하고 돌아가고 싶은 상태의 커밋의 id를 이용해서 복구한다.
$git reset --hard commit_id

아니 커밋할 때 보통 관련된 페이지에 대한 컴포넌트들을 다 완성시키고 커밋하는데 20%만 했단말인가?! 그럴 리가 없는데... 했지만 내가 틀렸으면 틀렸지 컴퓨터는 틀리지 않는다. 혹시나 싶어서 삭제된 파일 로그를 찾는 명령어를 아무리 쳐봐도 안 나온다 ^^ 이렇게 없어진 파일은 깃이 삭제됐다고 인식하지 않는 건지... 대체 어디서 유실된 걸까... 흑흑... 어디 갔어 얘들아...

 

 

아 안일하게 생각하고 브랜치를 나누지도 않고 master에서 온갖 깃 기능 실험도 해보고 난리 쳤는데 결국 이런 사태가 일어났다.

master 브랜치에서 수정, 삭제, 새로운 코드 등 이 플젝에서 뭔갈 하기만 하면 커밋했는데 이럴 때마다 원격 저장소에 바로 push 하다 보니 쓸데없는 커밋도 굉장히 많아지는 것 같다. 당장 브랜치 이름을 뭐로 해야 하나... 하고 고민하다가 stackoverflow에 쳐보니 좋은 댓글들이 많았다. 진짜 나는 stackoverflow 없었으면... 뭐 하고 있었을까... 나아가서 새삼 인터넷의 발전이 너무 감사하다ㅋㅋㅋㅋㅋ

 

 

What are some examples of commonly used practices for naming git branches?

I've been using a local git repository interacting with my group's CVS repository for several months, now. I've made an almost neurotic number of branches, most of which have thankfully merged bac...

stackoverflow.com

 

이제는 develop 브랜치에서 작업한다. 오늘 몸살기가 좀 있어서 대충 마무리하고 야호 드디어 내일은 백엔드다! 하면서 커밋하고 컴퓨터 끄고 자러 가려는 순간 이 사단이 났다. 일단 타이레놀 한 알 먹고 날아간 메인 페이지 컴포넌트 다시 만들어야겠다ㅋㅋㅋㅋㅋ후... 한번 만들어봤으니까 더 빨리 만들 수 있겠지 암튼 지금 이 사태를 겪어서 오히려 다행이라는 생각도 든다. 진짜로 지금이 아니더라도 이따위로 깃 사용하다가는 100% 나중에 가서 더 난리가 났을 거다. 하핫 갑자기 긍정적인척ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 

 

아 나도 git 잘쓰고 싶다. 그래도 원격 repo/로컬 repo 헷갈리던 시절(노답)도 있었는데 이런거 저런거 겪으면서 또 배워나가겠지 뭐!

와 난 왜이렇게 멍청할까... git은 나만 어려운걸까 하면서 검색해봤는데 다행히도 나만 어려운건 아닌가보다 급 위로가됐다..

 

 

Why is Git so hard to learn?

Answer (1 of 61): Because it is a very poorly thought out product that was never designed for ease of use. Often misused. The command syntax is arcane and mysterious. There are too many commands. This is symptomatic of having an implementation-level focus,

www.quora.com

"Git is not hard for everyone but for most of the people living in the world."  빨리 성장해서 most of the people 에서 벗어나고싶다.