깃허브
깃허브(GitHub)는 소프트웨어 분산 버전 관리(DVC) 툴인 깃(Git)을 사용하는 프로젝트를 지원하기 위한 웹호스팅 서비스이다. 깃(Git)이 텍스트 명령어 입력 방식인데 반해, 깃허브는 화려한 그래픽 사용자 인터페이스(GUI)를 제공한다.
깃허브는 전 세계 최대 규모의 오픈소스 공유 사이트 겸 개발자 커뮤니티로 성장했다. 루비(Ruby) 언어를 사용하여 개발했다.
2016년 5월 서울특별시는 행정정보 공공데이터 목록 500만건을 깃허브 사이트에 공유했다. 깃허브의 마스코트는 고양이 머리에 문어 다리가 달린 옥토캣(Octocat)이다.
목차
개요
깃허브는 가장 인기있는 깃(Git) 호스팅 사이트이다. 깃허브의 프로젝트는 표준 깃 명령줄 인터페이스를 사용하여 접근하고 조작할 수 있으며 모든 표준 깃 명령어들이 이 인터페이스와 함께 구동된다. 깃허브는 또한 등록 사용자와 비등록 사용자 모두에게 사이트의 공개 저장소를 찾아볼 수 있는 권한을 제공하며 여러 데스크톱 클라이언트와 깃 플러그인 또한 깃허브 그리고 플랫폼을 연동하는 다른 서드파티에 의해 개발되고 있다. 깃허브를 구동하는 소프트웨어는 루비 온 레일즈와 얼랭을 사용하여 깃허브 개발자들인 완스트래스(Wanstrath),하이엣(Hyett), 프레스턴-워너(Preston-Werner)에 의해 개발되었다.[1]
특징
깃과 깃허브
깃(Git)과 깃허브(Github)를 구별해야 한다. 스코드를 효육적으로 관리할 수 있게 해주는 형상관리도구 인 깃(Git)은 분산 소스 버전 관리 시스템이며 서버를 분산시켜 구축할 수 있게 하는 소프트웨어이다. 개발자들의 버전 제어 및 공동 작업을 위한 플랫폼 인 깃허브(GitHub)는 깃을 사용하는 프로젝트를 지원하는 웹호스팅 서비스를 제공하고 깃을 업로드 할 수 있는 웹사이트이다.[2]
버전관리
버전관리는 개발자간의 협업에 필요하다. 전체 개발 소스를 공유하면서 개발 파트를 나눌 수 있고 같은 모듈을 개발하더라도 소스를 서로 공유하며 개발할 수 있다. 버전관리 시 소스 하나 또는 묶음을 하나의 버전으로 간주한다. 파일이나 폴더를 추가, 수정, 사젝하며 사람이 직접 관리를 한다. 원할 때 예전 버전 내용 전체를 되돌려 볼 수 있으며 복잡한 코드를 개발할 때 이전 버전과 비교하기 편하다. 버전관리 활용의 장점은 개발 협영의 용이하다는 것이다. 또한 이력 관리가 개별적으로 가능하고 관리 내용을 오픈소스로 공유 할 수 있다는 장점을 가지고 있다.[2]
형상과 버전관리 도구
- 동시 버전 관리 시스템 : 동시 버전 관리 시스템(CVS; Concurrent Versions System)은 프로젝트 전체가 아닌 각각 파일 관리가 가능하다. 현재는 한계를 맞아 새롭게 서브버전이 개발되었다.
- SVN : SVN(Subversion)은 동시 버전 관리 시스템을 대체하는 버전 관리 시스템으로 형상관리 쪽에서는 깃만큼이나 굉장히 많이 쓰이는 툴이다. 현재 아파치 최상위 프로젝트로 세계 여러나라 개발자 커뮤니티와 함께 지속적으로 개발되고 있다.
- 머큐리얼 : 머큐리얼(Mercurial)은 파이썬과 일부 C언어로 개발된 크로스 플랫폼 분산 버전 관리 툴이다. 기본적으로 명령 줄 인터페이스 프로그램으로 모든 명령이 hg로 시작한다.[2]
주요 개념
- 병합 : 병합(Merge)은 한 브랜치(Branch)에서 완성한 작업을 다른 브랜치에 병합한다.
- 태그 : 태그(tag)는 특정 이력을 가지는 커밋(commit)에 대한 참조이다.
- 풀 리퀘스트 : 풀 리퀘스트(Pull request)는 완료한 작업을 다른 사람이 리뷰하고 병합하도록 요청하는 작업이다.
- 이슈 : 이슈(issue)는 기능에 대한 논의, 버그 추적하는 것을 의미한다.
- 위키 : 위키(wiki)는 링크들을 연결해 웹페이지 생성
- 푸시 : 푸시(Push)는 내 컴퓨터 로컬에 저장되어 있던 버전 정보를 서버에 올리는 작업이다.
- 풀 : 풀(Pull)는 깃 저장소 서버로부터 내 컴퓨터 로컬로 버전 정보 전체를 가져오는 작업이다.[2]
용어 정리
- 메인 저장소 : 메인 저장소(Main repository)는 오픈소스 프로젝트의 깃허브 상의 메인 저장소를 의미한다. 개인이 기여하고 싶은 프로젝트의 저장소이므로 개인에게 쓰기 권한이 없고 일반적으로 이를 업스트림(Upstream)이라고 부른다.
- 나의 저장소 : 나이 저장소(My github repository)는 깃허브상에서 자신의 계정상에 존재하는 저장소로 메인저장소로 부터 포크(fork)한 저장소이다.
- 로컬 저장소 : 로컬 저장소(Local git repository)는 나의 컴퓨터사에 생성한 로컬 깃 저장소를 의미한다.
- 작업 공간 : 작업공간(Workspace)는 컴퓨터상에서 실제 내가 소스를 개발하고 수정하는 작업공간을 의미한다.[3]
브랜치
브랜치(Branch)는 독립적으로 개발하는 것을 의미한다. 개발을 하다 보면 코드를 여러 개로 복사해야 하는 일이 자주 발생한다. 코드를 통째로 복사하고 나서 원래 코드와는 상관없이 독립적으로 개발을 진행할 수 있다. 모든 버전 관리 시스템은 브랜치를 지원한다. 이 브랜치는 다른 것들과 구분되는 특징이자 최고의 장점으로 언급되곤 한다. 가장 두드러지는 특징은 매우 가볍다는 것이다. 순식간에 브랜치를 새로 만들고 브랜치 사이를 이동할 수 있다.[4]
깃허브의 장점
깃허브는 소스코드 다시보기, 문서자료의 분류정리, 커뮤니티 관리, 코드 호스티, 프로젝트 관리 및 통합에 사용된다. 이러한 깃허브의 장점은 다음과 같다.
- 월정액으로 이용시, 비공개 사설 저장소를 제공한다.
- 좋은 웹 UI를 제공한다.
- 위키(Wiki)를 제공한다.
- 이슈 페이지를 제공한다.[2]
각주
- ↑ 〈깃허브〉, 《위키백과》
- ↑ 2.0 2.1 2.2 2.3 2.4 에이콘아카데미, 〈깃(Git)과 깃허브(GitHub) 궁금하시죠?〉, 《네이버 블로그》, 2019-04-25
- ↑ Hosang Jeon, 〈오픈소스 기여를 위한 GITHUB 개념정리〉, 《Guruble 블로그》, 2014-02-27
- ↑ 〈3.1 Git 브랜치 - 브랜치란 무엇인가〉, 《깃》
참고자료
- 〈깃허브〉, 《위키백과》
- lsgl, 〈github란? - github 소개 및 설치〉, 《네이버 블로그》, 2016-02-15
- 에이콘아카데미, 〈깃(Git)과 깃허브(GitHub) 궁금하시죠?〉, 《네이버 블로그》, 2019-04-25
- Hosang Jeon, 〈오픈소스 기여를 위한 GITHUB 개념정리〉, 《Guruble 블로그》, 2014-02-27
- 〈3.1 Git 브랜치 - 브랜치란 무엇인가〉, 《깃》
같이 보기
|