Jin

[프로그래밍] 효율적으로 팀프로젝트 소스관리하기! - GitHub 본문

View/Software

[프로그래밍] 효율적으로 팀프로젝트 소스관리하기! - GitHub

진:D 2014.01.17 23:39







팀프로젝트 개발

저는 컴퓨터공학을 전공한 취업준비생으로 주로 모바일앱이나 웹을 개발하고 있습니다. : )
개인적으로 혼자 개발할때는 IDE툴 (Integrated development environment)하나만 있어도 충분히 개발하면서 원하는 프로그램을 만들 수 있지만, 2명 이상의 팀단위로 프로그램을 개발할 때는 불편사항들이 많이 있습니다.

예를 들면, 동시에 개발자체를 할 수가 없습니다. 같이 개발을 하려면 본인이 개발한 곳까지 저장 후 압축한 뒤 다른 팀원에게 전달해주면서, 조금조금씩 밖에 진행을 할 수 없습니다. 프로그램개발을 많이 해본사람이 아니거나, 프로그램관련직종에 종사하고 있지않다면, 아마도 위 방법으로 다른 사람들과 개발을 할 경우가 많이 있을것이라고 개인적으로 생각됩니다.

하지만, 이미 개발을 할 때 팀단위로 개발을 할 수 있도록 통합관리시스템들이 많이 나와있습니다.
그런데 왜 이러한 시스템을 사용하지 않을까요? 대부분 이러한 시스템들이 외국에서 개발되었기 때문에 영문으로 기술되어 있고, 설명서조차 영어로 되어있기 때문인 것 같습니다……

그래서 저는 이번 포스팅을 통해 소스를 통합으로 관리하고 개발할 수 있도록 하는 시스템들을 소개하고, 그 중에서 가장 많이 사용하고 있는 것을 Step by Step으로 알려드리려고 합니다 : )

소스통합관리시스템

흔히 버전관리(version control, revision control), 소스관리(source control), 소스코드관리(source code management, SCM) 이라는 용어로 불리고 있습니다. 개발을 진행하면서 각 수정된 사항들을 버젼별로 구분하여 서버에 저장하여 여러사람들이 한 프로젝트에 접근하여 개발할 수 있는 시스템입니다.

버젼관리에서 사용하는 용어

체크 아웃 (Check Out)

체크 인 (Check In, Commit)

가져오기 (Import)

저장소 (Repository)

출처 : http://ko.wikipedia.org/wiki/버전_관리

대표적, 그리고 대부분 공통으로 사용되는 용어로 위 내용을 보실 수가 있습니다.
간단히 설명드리게 되면, 서버에 저장소(Repository)가 위치하고 있고, 체크아웃, 체크인, 가져오기를 통해서 나의 소스를 정리한뒤, 오류가 없으면 서버에 전송하고, 업데이트를 진행하면서 한 프로젝트를 완성해나가는 것입니다.

소스관리시스템의 종류로는 아래에 나열해보겠습니다.

- CVS
- Subversion(SVN)
- Mercurial
- Git

이정도가 있는데, 저도 사용해본 것은 Subversion(SVN)Git정도만 사용해보았습니다. 제 주변에도 이정도 사용한 것만 들어보아서, 나머지에 대해서는 자세히 설명드릴 수가 없네요 ㅠㅠ

Subversion(SVN)Git. 어떤 것이 좋은지는 잘 모르겠습니다. 하지만 요즘은 Git이 더 활성화되어 있는 것 같습니다 : ). 둘다 사용해보시고 편한 것을 골라 사용하시면 될 것 같네요 : )

저는 이번 포스팅에서 Git에 대해서 설명드리려고 합니다.

Git

Git공식홈페이지 위 이미지는 Git공식사이트입니다.

많은 사람들이 Git을 사용하고 있는데, 이는 Github 때문이 아닐까라고 생각됩니다. Github는 팀단위로 개발하는 소스들을 관리할 수 있게 환경(서비스)을 제공하는 것 뿐만 아니라, 프로젝트단위로 Wiki(위키), Issue(이슈)들을 제공함으로 좀 더 편리하게 프로젝트개발을 진행할 수 있도록 도와줍니다.

Github의 단점이라면 전부 영어라는게 가장 큰 단점인 것 같습니다;; (영어도 그냥영어가 아닌, 대부분 전문용어라 인터넷에 검색해봐도 명확한 뜻이 나오지 않을 때도 있습니다..)

그래도 세계적으로 많은 오픈소스(Open Source)들이 Github를 통해 공유가 되고 있습니다. 프로그래머가 꿈인 학생들이나, 현업에 종사하시는 분들도 Github에 올라와있는 많은 오픈소스들을 참고하여 개발을 하실꺼라 생각합니다 :D (저 역시도 마찬가지입니다!)

그래서 이러한 환경에 좀 더 빨리 적응하도록 도와드리려 Github를 통해 프로젝트를 어떻게 생성하고 관리하는지 간단하게 소개하려 합니다 : )

Yobi

구지 어려운 영어를 배워가면서 Github를 사용하기 싫으신 분?

한국에서 개발된 소스관리시스템을 서비스하고, 오픈소스로 공개되어 있는 것이 있습니다 : )

네이버에서 개발된 Yobi입니다. 완벽하게 한글로 서비스되고 있으며, 나의 소스를 오픈하기 싫다면 해당 Yobi오픈소스를 다운받아서 자체서버로 돌릴 수도 있습니다 : )

Yobi 바로가기

Git 용어 알아가기

용어를 하나하나 설명해도 좋기는 하지만 더 좋고 괜찮은 사이트들이 많이 있어서 링크로 소개하려 합니다.

Git을 처음사용할 때 어떻게 해야할지 모르는 사람들을 위한 Git 설명서 사이트입니다.

http://rogerdudler.github.io/git-guide/index.ko.html

다음은 Git을 게임처럼 하나하나 따라하고 학습해볼 수 있는 사이트입니다. 한글로 가르쳐주고 하나하나 차례대로 알려주니, 처음시작하시는 분들께 엄청 추천해드리고 싶은 곳입니다.

http://learnbranch.urigit.com

여기는 GitHub에서 공식적으로 배포하는 GitHub튜토리얼입니다.

http://try.github.io//levels/1/challenges/1

GitHub 회원가입

Github첫페이지

GitHub바로가기 - https://github.com

GitHub홈페이지에 접속하면 바로 회원가입을 할 수 있도록 노출되어 있습니다.

원하는 닉네임, 이메일, 피밀번호를 입력하시면 바로 회원가입완료입니다! (이메일인증정도는 진행하겠지만요^^;;)

프로젝트만들고 기본세팅하기

프로젝트첫페이지

모든 회원가입을 마친 후에 GitHub홈페이지로 접속하면 프로젝트 초기화면을 보실 수 있습니다.

고양이그림들을 통해 GitHub를 통해 어떠한 것들을 할 수 있는지 간단히 소개되어 있네요 : )

새로운 프로젝트를 생성하기 위해 New respository 버튼을 눌러주세요!

프로젝트 이름설정

Respository name 에 GitHub에 노출될 프로젝트명을 써주시면 됩니다.

Description 은 프로젝트에 관해 간단한 설명을 적어주세요 : )

그 다음은 PublicPrivate설정하는 부분이 있는데, Public밖에 선택이 안되실꺼예요.. 무료사용자는 Public만 선택 가능하여 모든소스가 오픈소스로 공개되는 것입니다. Private은 다른 사용자들에게 비공개로 되어 있어서 보안이 중요한 프로젝트를 진행할 수 있는데, 이는 유료사용자들만 가능합니다.

다음은 Initialize this respository with a README 가 있는데 다른사람들에게 소개될 페이지를 자동으로 생성할 것인지 체크하는 항목입니다. license까지 설정할 수가 있네요!

필요한 설정들을 완료하시면 Create respository버튼을 눌러 최종적으로 프로젝트를 생성합니다 : )

프로젝트생성완료

프로젝트가 완료되면 프로젝트를 모두 볼 수 있는 공간이 나오게 됩니다. 여기서 이슈, 위키등의 기능을 추가적으로 이용할 수 있고, 소스들을 간단하게 살펴볼 수 있습니다 : )

다른 팀원에게 프로젝트 소스권한을 부여하려면 우측 메뉴에 있는 Setting에서 설정할 수가 있습니다.

GitHub에 있는 소스를 나의 컴퓨터에서 작업하려면 무언가 연결을 해야겠지요?

GitHub소스링크

우측에 있는 링크를 클립보드로 복사합니다.

터미널

다음은 윈도우에서는 Git Hash프로그램을 이용하거나 OS XTerminal을 이용해서 Git소스를 다운받아주면 됩니다 : )

server:git jin$ git clone https://github.com/devjin0617/jin-tistory-skin-bootstrap.git

복사해서 붙여넣으면 위처럼 쓰면 되겠죠? (위에있는 명령어를 그대로 카피하지 마세요^^;; 예제입니당!)

이런식으로 하면 기본적인 기능은 끝났고, 여러 사용설명서를 더 참고하면서 진행하면 될 것 같습니다 : )


6 Comments
댓글쓰기 폼