럿고의 개발 노트

[삼성SDS Techtonic 2019] 초급개발자를위한 GitHub기반 협업개발방식워크샵 본문

Git Note

[삼성SDS Techtonic 2019] 초급개발자를위한 GitHub기반 협업개발방식워크샵

KimSeYun 2019. 11. 15. 13:58

[삼성 SDS Techtinic 2019]

초급개발자를위한 GitHub기반 협업개발방식워크샵


● Github란?


https://www.youtube.com/watch?v=w3jLJU7DT5E


- The world's leading softeware development platform.


- Management : 개발코드 및 관련 이슈를 관리할수 있는 온라인 Platform


- Share : 프로젝트 관련내용을 손쉽게 공유


- Commuication : 프로젝트 이해관계자들과 소통


https://github.com/





● 코드스멜(CodeSmell)이란?


- 코드 스멜은 컴퓨터 프로그래밍 코드에서 더 심오한 문제를 일으킬 가능성이 있는 프로그램 소스 코드의 증상을 가리킴.


- Github에 Issues에 CodeSmell을 적혀 있으면, 그걸 수정하면 된다.





● Git을 활용한 작업 방식


- Git을 활용한 개발 환경에서 어떠한 이유로 코드를 수정할 일이 발생하게 되면 수정을 위한 Branch를 만들어 작업을 하고 작업이 끝나게 되면 원래 Branch로 작업내용 반영요청을 합니다. Branch를 생성하고, 반영요청하고, 코드리뷰를 하는 과정을 거쳐 어플리케이션을 만들어 갑니다.


- 관리의 단위 또는 기능개발 단위로 branch를 생성하여 개발하고 병합(Merge)하는 프로세스를 지원


- Branch전략


■ Git Flow : 5가지의 종류의 브랜치로 나누어지게 됨.

1. master : 제품으로 출시될 수 있는 브랜치

2. develop : 다음 출시 버전을 개발하는 브랜치

3. feature : 기능을 개발하는 브랜치

4. release : 이번 출시 버전을 준비하는 브랜치

5. hotfix : 출시 버전에서 발생한 버그를 수정 하는 브랜치


■ Github Flow : master브런치에 대한 role만 정확하다면 나머지 브런치들에는 관여하지 않고 pull request를 사용하도록 권장


■ Gitlab Flow : github flow와 비슷하지만, production 브런치를 존재하여 커밋한 내용들을 일방적으로 디플로이를 하는 형태.


- Branch전략에는 정답이 존재하지 않고 개인과 조직, 프로젝트 상황에 맞게 사용





● 나만의 저장소 만들기


- Fork


- Branch





● 코드 수정


- Issue 확인 후 코드를 수정


- Commit Message 작성(이슈 번호 달기, commit내용은 수정한 내용 적기)




● Pull Request


- Git을 활용한 개발 환경에서 수정을 위한 Branch에서 작업이 끝나면 원래 Branch로 작업내용 반영요청


- base repositroy : pull를 해달라고 할 저장소(즉, 내 브런치와 병합될 브런치 및 저장소)


- head repository : 내가 코드 수정한 브런치(즉, 나만의 브런치)


- 관리자가 봇을 이용해 자가 점검을 위한 체크리스트를 만들어 놓았을 수도 있고, Review를 하지 않으면 pull Request 자체를 못하게 설정해놓았을 경우, Reviewer를 지정하여 리뷰어에게 리뷰를 받아야 함.





● Code Review


- 코드리뷰는 개발협업 중 하나입니다. 과격한 코드리뷰는 코드 관련인의 마음을 상하게 할 수 있습니다. 코드를 작성한 사람에 대한 리뷰가 아닌 코드자체에 대한 리뷰를 해주세요.


- 라인별로도 할수 있고, 총 합쳐서 할수도 있다.


- Line Comment / Review changes - Approve


- 또한 코드작성자는 리뷰를 확인하고 그에 맞는 피드백을 주기도 하여야 한다.





● 코드합치기(Merge)


- Code Owner는 (때로는 코드를 작성한 개발자 본인이 될 수 도 있음) 코드수정 내용 및 코드리뷰 내용을 확인하고, 코드를 원본 Branch에 Merge합니다.


- 소스코드의 같은 Line을 수정한 경우 MErge Conflict가 발생하여 Resolve Conflict 아이콘이 나타남.


- ======, 부분 위, 아래를 확인하여 Conflict를 확인한 후 어떤 내용으로 Merge할것인지 편집





● 릴리즈(Release)


- 개발이 완료되면 특정 시점마다 Release를 하여, 버전 관리를 합니다. 많은 오픈소스들이 Github의 Release 기능을 활용하여 Release 관리를 하고 있습니다.





● 후기


- 실무에서 Github를 어떻게 사용하는지에 대해서 많은걸 깨닫게 된 시간이었습니다.


- 또한 직원분들이 너무나도 친절하게 모르는것에 대해서 알려주시고, 초보자들에 맞춰서 짧은시간에 천천히 설명해주는 모습이 너무나도 인상깊었습니다.


- 강의가 끝나고도 질문을 너무 친절하게 받아줘서 너무 좋았습니다. 지금까지 내가 썻던 Git에 대해서 많이 반성하게 되었고 ㅋㅋㅋ 실무에서도 Git을 예쁘게 잘 쓸수 있을것 같아서 너무나도 좋았습니다!


- 그리고 Commit메시지 잘써서 스타벅스 카드 받았던것도 감사하게 잘 쓸거 같습니다 ㅎㅎ








https://www.samsungsds.com/global/ko/about/event/techtonic2019.html





Comments