규도자 개발 블로그

깃(git) 시나리오를 기반으로 한 git project를 시작하려 한다. 본문

잡설

깃(git) 시나리오를 기반으로 한 git project를 시작하려 한다.

규도자 (gyudoza) 2020. 6. 25. 22:17

오늘부로 입사 4일차이다. 전반적인 감상을 말하자면 기대한 만큼 만족스럽고, 또 배울 게 많아 굉장히 즐겁다. 하루하루 레벨업 하는 게 느껴진다. 벌써 ansible을 배워 사용하고 있고, 수박 겉핥기 정도만 다뤘던 git과 node를 적극적으로 사용하고 있다. 이 과정에서 pm2나 sequelizer를 다루는 법도 배웠고 이를 systemctl, ansible과 결합하여 이미 구축돼있는 배포자동화 시스템에 내가 수정한 코드를 끼워넣는 작업을 하고 있다. 어렵고 재밌다.


하지만 잘 돌아가던 개발팀이라는 시스템에 나라는 불순물이 새로이 투입돼서일까, git 관련 이슈가 벌써 세네번은 발생한 것 같다. 오늘부로 출근 4일차이니 코드를 거의 만지지 않았던 출근 첫 날 빼고는 거의 매일 git 관련 이슈가 발생했다고 할 수 있겠다. 계속해서 일어나는 git 관련 이슈 때문에 CTO님, 팀장님 등에게 질문을 자주 하게 됐는데 그래서인지 깃 관련 이슈는 케이스가 너무 제각각이라 익숙해지는 수밖에 없으니 그때그때 임기응변으로 배우고 git관련 공부는 별로 의미가 없을 것이라는 말을 들었다.


그래서 생각했다! git repository를 하나 파서 새로운 케이스를 만날 때마다 추가해 나가면 누군가에게 도움이 될 뿐더러 혹시 다른사람들도 참여해주지 않을까. 그리고 몇몇 케이스는 너무 복잡해서 어디에 적어놔야 또 같은 케이스를 만났을 때 활용할 수 있을 것만 같아서 말이다. 특히 오늘 겪었던 이슈 같은 경우가 그러하였다.



오늘 발생했던 이슈는 이러하였다.

1. git repo가 하나 있는데 master는 production server에 deploy되는 branch다.

2. 난 master에서 새로운 branch를 하나 새로 따서 작업하였고, 작업을 완료한 후 merge request를 보냈다.

3. 다른 분이 코드를 확인하시고 내가 만든 branch를 master에 merge했다.

4. 하지만 또 다른 분이 내가 작업한 내역이 master에 적용돼있는지 모르고 다른 branch를 merge한 다음에 production server에 deploy했다.

5. 그렇게 staging server에서 qa과정을 거치지 않은 내 코드가 production server에 배포되었다.

6. 그래서 다시 내가 작업한 내역이 적용되기 전 commit으로 revert한다음 4번과정에서 작업하셨던 branch를 다시 merge하여 재배포되었다.

7. 그 상태에서 이러한 상황을 방지하고자 현재 master에서 staging-master branch를 따서 내가 전에 만들었던(2번) branch를 merge하기로 했다.

8. 그래서 staging-master branch를 새로 생성하고 2번에서 작업한 내역을 적용하려 하였으나 code conflict가 일어나야 하는 부분에서 계속 staging-master부분이 선택되어 적용되었다.

9. 그러니까 내가 2번에서 작업한 내역이 계속 누락이 되는 현상이 발생하는 것이어따... 그렇다고 그냥 복붙으로 내가 만든 코드를 넣기엔 git을 쓰는 이유가 없다고 생각해서 진짜 여기저기 다뒤져봤지만 방법이 없었다. 그래서 CTO님에게 도움을 요청했고 가볍게 해결해주셨다.


방법은 이러했다. git log hash를 맞추기 위해 staging-master에서 새로운 branch를 따고, cherry-pick으로 현재 master-branch에서 누락돼있는 내 깃 로그의 해쉬를 참조하여 새로운 branch에 적용한 다음에 rebase로 쓰잘데기 없는 커밋 로그를 없애고, 그 branch를 staging-master에 merge reqeust하여 적용하는 식이었다. 잠깐 정신줄 놓으면 전체를 까먹을만 한 방법이었다. 사실 그래서 적어놓는 것이다. 분명 내일의 나는 이것을 까먹을 것이기 때문에...


모자란 실력으로나마 원인을 유추해보자면 아마 근본없는 깃 로그 해쉬를 가지고 있었던 내 작업 branch는 신뢰할 수가 없어서 누락된 게 아니었을까 싶다.


아무튼 이것 말고도 이런저런 케이스들이 있는데 비슷한 일이 일어났을 때 참고할만 한 곳이 있었으면 좋겠다는 생각이 들었다. 왜냐. 내가 몇십 분동안 찾아도 안나왔거든. 그래서 참 구루들과 일한다는 게 정말 고맙고 감사하고 내 실력 향상에도 엄청난 도움이 되는구나 싶었다. 언넝 1인분 하는 개발자가 되고 싶다.

Comments