Github PR 올리는 법 (실무 관점)

박정기·2022년 11월 23일
0

GitHub

목록 보기
1/1

GitHub 실무 강의

오늘은 국민은행에서 NLP로 머신러닝 엔지니어로 일하시는 박장원님의 깃헙 강의를 들었다.

기초 github 내용이 아닌, 실무적인 관점에서의 깃헙 관점이라 배울점이 정말로 많았다.

박장원님의 깃헙 주소는 다음과 같다.

https://github.com/monologg

신입 개발자가 미리 알고 왔으면 좋은것 2가지

1. Linux 사용법

2. GitHub PR

특히 GitHub PR 올리는 방법은 개인이 스스로 배우기 어려운 부분이 존재한다.

회사생활에서 정말로 도움이 되는, 협업에서 반드시 필요한 스킬이기 때문에 꼭 필수적으로 알아둬야할 기본 소양이라고 생각된다.

Git 과 GitHub 차이

  • 원래 Git이 등장한 이유는 토발즈 개발자가 Linux를 개발하다가 불편하여 개발한 것.(커밋이 백만개가 넘음)
  • 웹으로 Git을 볼 수 있게 한게 GitHub이다. (GitLab도 많이 씀)

GitHub을 쓰는 이유

  • 협업을 위한 툴
  • 코드를 어떻게 짰었는지 기록
  • 포트폴리오를 위해
  • 깃헙이 잘 작성돼있다면, 회사입장에서 약간의 검증이 될 수 있다.

프로젝트가 중요한게 아니라 "코딩 습관" 이 중요하다.

  • 개발자의 글쓰고 정리하는 능력 중요
  • 커밋 메세지는 어떻게 쓰는지
  • 테스트 코드는 어떻게 짜는지
  • PR은 어떤식으로 하는지

GitHub 기초 설정

# github profile
git config --global user.email "이메일주소"
git config --global user.name "깃헙 닉네임"

# vscode editor
git config --global core.editor "code --wait"

gitignore

  • AWS 비밀키, 코드상에 있어선 안되는 토큰들을 git에 올리지 않기 위해.
  • 저작권 이슈가 있는 학습용 Data를 git에 올리지 않아야 한다 (중요)
  • gitignore 생성 링크에서 자신에 프로젝트에 맞는 gitignore파일을 default로 생성 가능

git branch

git checkout -b feat/model-pipeline

  • 어떤 작업을 하던지간에 branch를 만들어서 진행한다.
  • 만약 model pipeline을 만들기로 생각했다면 model pipeline기능을 만들기 전에 branch를 만들고 그 branch에서 작업을 한다.
  • 작업이 마무리되면 PR을 날린다.

Commit msg

  • 커밋 메세지가 왜 중요할까?
  • 다른 사람이 볼 때 중요한 코드 변경을 체크 할 수 있는 용도
  • .gitmessage 파일안에 feat, fix, chore 등 어떠한 목적의 commit 인지 구별할 수 있게 작성하여 commit을 빠르게 분류 할 수 있게 한다.
  • git config --global core.editor "code --wait" 를 통해서 vscode에서 commit msg를 작성할 때 편하게 작성 할 수 있다.
  • commit 쪼개기는 code review 하는 입장에서 매우 편하며, 자신이 짠 코드에서 발생한 이슈 원인을 찾을 때 매우 편리하다.

PR(Pull request)

  • model-pipeline 브랜치를 master 브랜치로 merge 하고싶다고 상급자에게 코드 리뷰를 받는 과정
  • 일하는 센스: PR 진행시, 어떠한 작업을 했는지 간단 명료하게 전달.
  • close #1 -> close 키워드를 통해서 merge 승인이 났을 경우 issue가 바로 닫히는 기능

File changed

  • 어떤 코드가 바뀌었는지 상급자가 코드리뷰를 하면서, 개선해야 할 코드에 대해서 코멘트를 남길 수 있음
  • 작성시 pending 상태로 존재 하다가 Finish review하면 실제로 하급자에게 알림이감

hard coding issue

  • 하드코딩이 돼있을 경우 arg로 받을 수 있도록 코드를 수정하는게 좋음
  • 함수 내에 default 값을 설정해 주어 다른 값이 들어와도 동작하도록 코드 개선
  • fix: hard coding issue

주석

autoDocstring (vscode 확장 프로그램)

| ``` 입력시, 자동으로 주석 format을 만들어줌

함수 동작 요약

Args:

Return:

위와 같이 함수 안에 어떠한 동작을 하는 함수인지, args는 어떤 타입으로 들어오며 optional하게 들어오는지 무조건 들어오는지 확인, return 값은 어떤 타입으로 출력되는지 적어 준다.

Re-request review

  • 하드 코딩 해결
  • 주석 해결
  • issue들을 모두 해결하고 commit을 다시 날린 뒤, Re-request 버튼을 통해 상급자에게 알림을 보낼 수 있다.

Merge

  • 상급자가 코드에 문제가 없다고 판단 됐을 때 "LGTM"
  • Merge후 자동적으로 issue가 close됨 (close #1)

branch 삭제

  • 이제 model-pipeline branch는 필요 없으므로 삭제한다.
  • 삭제는 PR 페이지에서 할 수 있음
  • branch 삭제 후 다시 터미널로 왔을 때는 꼭 git pull을 하고 작업을 해야한다.

코드리뷰를 왜 해야할까?

  • 코드리뷰의 가장 큰 목적은 "성장"
  • 서로 성장하기 위해 코드리뷰를 한다.

결론

  • 코딩은 혼자서 하는게 아니다. 동료, 선임, 사수님등 많은 사람들과 같이 협업해야 하는데, GitHub은 그 부분에서 가장 기본적이고 기초적인 협업 툴이다.
  • PR을 잘 날리고, 코드리뷰를 받고서 개선해야 할 점을 개선 한뒤 re-request를 날리고 LGTM을 받고, 상급자가 Merge하는 경험을 간접적이라도 경험해야겠다고 생각했다. 내가 아이디를 하나 더 만들어서 상황극을 해도되고, 현재 같이 프로젝트를 하는 동료와 함께 해볼 생각이다.

1개의 댓글

comment-user-thumbnail
2022년 11월 27일

깃헙을 꽤 써왔지만 실무적인 관점에서의 깃헙을 접하니 또 새롭네요ㅎㅎ 잘 보고갑니다!

답글 달기