본문 바로가기

후기들

글또와 함께 한 깃미남 Git 특강

서론 및 강의 내용

글또에서 깃미남님을 소개해 주시고 연락해 주신 분이 계셔서 강의를 듣게 되었다. 깃은 항상 회사에서 사용하는 부분만 사용하기 때문에 내가 모르는 더 유용한 기능이 있을까 싶어 신청했다. 사소하지만 깃에서 실수하여 시간을 낭비한 적이 종종 있었기 때문이다(예: 머지 실수로 내가 작성한 코드를 날려버리는 등).

강의는 2시간 동안 진행되었으며, 신청자들을 대상으로 설문을 진행해 듣고 싶은 내용을 위주로 선정했다. 시간이 부족해서 강사님께서 인터넷에 올려둔 강의 자료도 공유해 주셨다. 인터넷 강의 내용 중 중복되는 내용도 있었지만, 더 많은 것을 알게 되어 유익했다.

이번 오프라인 강의에서 다룬 내용은 다음과 같다:

  • 오리엔테이션 (강의 소개)
  • Git 내부 구조 및 동작 (Git의 네 가지 객체)
    • Git의 네 가지 객체: BLOB, Tree, Commit, Tag에 대한 설명
  • 리베이스 / 인터랙티브 리베이스
    • 리베이스 개념 및 머지와 차이점, 인터랙티브 리베이스(스쿼시)
  • 브랜치 관리하기
    • git flow 방식 소개 및 깔끔한 커밋 히스토리 만들기
  • 유용한 팁
    • Reflog

 

새로 알게 된 것

  • 깃의 구조
    • 깃의 네 가지 객체: BLOB, Tree, Commit, Tag
    • 깃을 단순한 도구로만 사용했기에 내부 구조를 살펴볼 생각을 해본 적이 없었는데, 객체 구조와 각 객체가 해시를 통해 식별 가능하다는 점이 흥미로웠다. 이러한 정보는 브랜치 및 히스토리 관리에서 유용할 것 같았다. 생각보다 데이터가 절약적으로 저장된다는 점도 신기했다.
  • 해시 생성
    • 해시의 변화로 깃의 커밋 객체가 동일한지 여부를 판단할 수 있다는 점이 유용했다.
  • reflog(레퍼런스 로그)로 hard 리셋된 커밋 복원하기
    • 머지할 때 실수로 작업한 내용을 날린 경험이 여러 번 있었는데, 해당 방법을 알면 이를 개선할 수 있을 것 같아 기대되었다.
  • 리베이스 푸시의 유용성
    • 기존에는 머지 푸시만 사용했는데, 리베이스 푸시도 실무에서 활용해 보면 좋을 것 같다는 생각이 들었다.
  • 커밋 히스토리 관리의 중요성
    • 커밋 히스토리가 복잡해지면 나중에 변경 이력을 파악하기 어렵고, 누가 어떤 코드를 개발했는지 헷갈릴 때가 많았다. 이번 강의를 통해 깔끔한 커밋 히스토리 관리의 필요성을 더욱 실감했다.

 

 

이전에 들었던 오픈소스 컨트리뷰션 아카데미 깃 강의와의 차이

이전 강의는 깃을 오픈소스 기여를 위한 도구로서 다루었다.

깃 자체보다는 오픈소스 활동에 유용한 명령어 위주로 배웠으며, 실습도 협업 방식으로 진행되었다.

반면, 이번 강의는 깃 자체에 대해 깊이 다루었으며, 내부 구조 및 동작 원리까지 상세히 설명해 주었다.

실무에서 겪는 문제나 학습 과정에서 가질 수 있는 의문점들을 다루어, 실무 적용 방안을 고민할 수 있어서 좋았다.

 

 

현재 회사에서는 어떤 방식을 사용하고 있는지…

  • 태그 이벤트로 push 수행
  • 태그를 단순히 커밋 위치를 표시하는 용도로만 생각했는데, 회사에서 태그 이벤트 방식을 사용하는 이유를 더 깊이 이해할 수 있었다. 병원마다 어느 작업까지 적용되었는지 표기할 필요가 있어 푸시 이벤트보다 태그 이벤트를 사용했던 것으로 이해할 수 있었다.
  • git flow 유사하지만 다른 브랜치 전략
  • main - develop 구조와 feature 브랜치 사용 방식은 git flow와 유사하지만, develop이 사실상 메인 브랜치처럼 사용되고 있다. 이로 인해 한때 브랜치 전략을 논의한 적이 있었지만, 제대로 정착되지는 않았다. 이번 강의에서는 git flow 방식만 다뤘지만, 다양한 브랜치 전략도 공부할 필요성을 느꼈고 추후 좀 더 비슷한 회의가 진행된다면 적극적으로 의견을 낼 수 있지 않을까 하는 생각이 들었다.
  • 스쿼시 커밋 권장
  • 릴리즈가 태그 단위로 배포되기 때문에, 어떤 기능이 포함되었는지 기록하는 과정에서 스쿼시 커밋이 유용했다. 기존에는 커밋을 세분화하여 기록했는데, 비슷한 작업을 하면서 커밋이 너무 많아지는 경우가 있었다. 현재는 MR(PR) 후 스쿼시 커밋으로 머지하는 방식을 사용하고 있지만, 깃 명령어를 활용해 더 효율적으로 스쿼시 커밋을 적용할 방법도 고려해 보고 싶다.
  • 리베이스 미사용
  • 현재 회사에서는 커밋 히스토리를 정교하게 관리하지 않기 때문에 리베이스를 사용할 필요성을 느끼지 못했다. 하지만 이번 강의를 통해 커밋 히스토리 관리 측면에서 리베이스의 장점을 깨닫게 되어, 실무에서 활용해 볼 가치가 있다고 생각했다.
  • 리셋 활용
  • IDE에서 제공하는 기능 덕분에 자주 사용했지만, 실수로 hard 리셋하여 데이터를 날린 경험이 있었다. reflog를 활용하면 복원할 수 있다는 점을 알게 되어, 실무에서 유용하게 적용할 수 있을 것 같다.

 

느낀점

2시간이 너무 짧았다. 유익하고 알찼지만, 실습 및 질문 시간이 부족해서 아쉬웠다.

이전에 들었던 오픈소스 컨트리뷰션 아카데미에서는 3명씩 조를 편성하여 협업하는 방식으로 실습을 진행했다. 덕분에 모르는 부분은 서로 도와주고, 함께 작업하며 실질적인 경험을 쌓을 수 있었다. 하지만 이번 강의에서는 각 목차가 끝난 후 10분 정도 실습 시간이 주어져, 단순히 명령어 입력을 해보는 것으로 실습이 끝난 느낌이었다.

실습 내용이 꼼꼼하게 정리되어 있어 질문할 거리가 많지는 않았지만, 좀 더 추상적인 방식으로 제시되었더라면 직접 실습하면서 개념을 구체화하는 데 도움이 되었을 것 같았다. 특히, 오픈소스 컨트리뷰션 아카데미에서는 리베이스 같은 개념을 실제 오픈소스 기여 활동을 하는 것처럼 실습할 수 있어 더 와닿았던 점이 기억에 남는다. 실습을 좀 더 협업할 수 있게 진행되었으면 머리에 더 남을 것 같다는 생각이 들었다.

이러한 부분이 다소 아쉽긴 했지만, 시간이 부족하게 느껴질 만큼 유익한 강의였다. 깃에 대해서 좀 더 깊이 있게 알고 싶은 사람이나 실무에서 더 깃을 유용하게 사용할 방법을 고민하는 사람들에게 추천하고 싶다.