Engineering/Software Engineering

[Software Engineering] GitHub에서 놀자!! (깃허브 사용법)

MB Kyle KWON 2015. 2. 11. 13:31



    깃허브(이하 '깃헙')는 개발자들의 놀이터이다. 하지만 놀이기구를 탈 줄 모르는 개발자들이 많아 필자가 깃헙을 사용하면서 터득한 내용들을 공유하려고 한다. 깃헙에서 놀고 싶고 전세계 개발자들과 교류하고 싶은 개발자들은 이 글을 참고하기를 바란다.


혹시 GitHub(깃헙)이 아닌 형상관리 도구인 Git(깃)을 찾는 분이리면 'Git의 개념과 기초 사용법'으로 가길 바란다.


https://github.com/MBKwon



1. 놀이터 몰색


   우선, 내가 놀고싶은 놀이터를 찾는 일이 필요하다. 내가 사용하는 주요 프로그래밍 언어, 관심있는 플랫폼, 사용중인 라이브러리/프레임워크와의 연관성 등 개발자들은 자신이 놀 놀이터에 관해 호불호가 갈리게 되어 있다. 깃헙에서 자신이 놀고 싶은 놀이터를 찾는 것도 하나의 일이다. 그럼, 놀이터를 어떻게 찾을 수 있을까?


    가장 손쉬운 방법은 자신이 사용하는 오픈소스 프로젝트를 기웃거리는 것이다. 필자의 경우, iOS 개발자이다. iOS 개발자이기 때문에 당연스럽게 접하는 것들이 있다. AFNetworking, FMDB, EGOCache 등 iOS 오픈소스 라이브러리를 접하게 된다. 깃헙에서 놀고 싶다면 이렇게 자신이 사용하는 오픈소스 프로젝트에 접속해봐라. 그곳이 가장 놀기 쉬운 놀이터라고 생각한다. 


    놀이터를 찾는 또다른 방법은 깃헙에서 제공해주는 'explore'를 이용하는 것이다. 깃헙 상단에서 볼 수 있는 메뉴이다. 해당 메뉴를 눌러보면 현재 깃헙에 있는 모든 놀이터들이 종류별, 테마별로 분류되어 있으며 이번 주/ 이번 달 별로 가장 인기있는 프로젝트들이 놓여 있다. 이곳을 탐험(explore)하다보면 자신이 관심을 가질 만한 곳을 발견할 수 있을 것이다.



2. 놀이터에서 친구 만들기


    놀이터를 찾았다. 놀이터에서는 아이들이 놀고 있다. 내가 아는 친구가 없다. 그럼 무엇부터 해야할까? 친구를 만들어라!! 놀이터에 들어가보면 'Watch, Star, Fork' 라는 버튼이 보일 것이다. Watch는 프로젝트의 각 이력들에 대해 알림을 받을 수 있다. Star는 북마크와 같은 기능이다. 마지막으로 Fork라는 친구가 제일 중요하다. 이는 나중에 설명하겠다.


    일단 놀기 위해서 놀이터의 판을 읽어야한다. 판을 읽기위해 사용되는 메뉴가 왼쪽에 보이는 'Code, Issue, Pull Request, Wiki' 이다. Code는 놀이터에 처음으로 들어오면 나타나는 화면으로 각 Code를 온라인에서 확인이 가능하다. 뿐만 아니라 release와 commit, contributor 또한 확인 가능하다. 즉, 놀이터의 현재의 겉모습을 전반적으로 확인할 수 있다.


    Issue는 각 개발자들에게 친숙한 단어이다. 이 단어가 친숙하지 않다면 자신의 Career를 의심해볼 필요가 있다. 깃헙의 Issue는 대화의 장이다. 프로젝트가 가지는 버그 및 사용법 등 프로젝트에 관해 생기는 모든 사항에 관하여 참여 중인 개발자들이 대화를 나누는 공간이다. '버그의 발생경로 및 해결 방법에 관한 논의', '라이브러리의 사용법이 어려워 사용법 개선을 위한 논의' 등 여러가지 갈래로 대화가 이루어 진다. Label을 이용하여 Issue들을 체계적으로 정리해 놓은 곳이 있다면 그곳은 놀기 좋은 놀이터이다. 하지만 모든 놀이터가 놀기 좋게 정리되어 있지는 않다. 물론, 대부분의 놀이터에서 대화는 영어로 이루어진다.



3. 놀이터에서 놀기


    Pull Request는 놀이터에서 할 수 있는 놀이 중, 필자의 생각에 가장 의미있고 재미있는 캐치볼과 같은 게임이다. Pull Request를 설명하기에 앞서 위에서 설명을 미룬 Fork부터 알고 넘어가자. 


    Fork는 상대방의 Branch에서 자신의 독자적인 Branch를 복사하는 것이다. 리눅스를 다루어보고 시스템 프로그래밍을 해본 사람은 Fork라는 말만 들어도 감이 올것이다. Git에서 Branch를 따는 것과 같은 이치이다. 자신의 소유의 Branch를 생성한다. 이 Branch는 기능 개선 및 버그 수정 등의 용도로 독자적인 개발을 진행할 때, 사용하게 된다. 


    다시 Pull Request를 설명하자면 Fork한 Branch의 작업이 완료되고 자신이 Fork했던 Main Branch로 Pull하기 위한 요청(Request)이다. Pull Request를 알리려면 먼저 자신이 어느 부분을 수정했고 어떻게 개선되었는지에 관해 적을 수 있는 창이 등장한다. 여기에 가능한 상대방이 이해하기 쉽도록 자신이 수정한 부분을 어필하고 영어로 기술한다. 바뀐 line에 대해서는 언급할 필요없다. Pull Request를 날리게 되면 알아서 Diff를 이용한 변경이력이 첨부되기 때문이다. 단지 수정한 부분이 발생하게될 효과에 대해 어필하면 된다. Main Branch 관리자가 Pull을 하게 되면 Main Branch에서 'Contributor'에 등록된 자신의 모습을 확인할 수 있을 것이다.