검수요청.png검수요청.png

깃허브

위키원
Asadal (토론 | 기여)님의 2019년 8월 8일 (목) 03:10 판 (같이 보기)
이동: 둘러보기, 검색
깃허브(GitHub) 로고
깃허브(GitHub) 로고와 글자

깃허브(GitHub)는 소프트웨어 분산 버전 관리(DVC) 툴인 (Git)을 사용하는 프로젝트를 지원하기 위한 웹호스팅 서비스이다. 깃(Git)이 텍스트 명령어 입력 방식인데 반해, 깃허브는 화려한 그래픽 사용자 인터페이스(GUI)를 제공한다. 깃허브는 전 세계 최대 규모의 오픈소스 공유 사이트 겸 개발자 커뮤니티로 성장했다. 루비(Ruby) 언어를 사용하여 개발했다. 깃허브의 마스코트는 고양이 머리에 문어 다리가 달린 옥토캣(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]

깃허브의 장점

깃허브는 소스코드 다시보기, 문서자료의 분류정리, 커뮤니티 관리, 코드 호스팅, 프로젝트 관리 및 통합에 사용된다. 이러한 깃허브의 장점은 다음과 같다.

  1. 월정액으로 이용시, 비공개 사설 저장소를 제공한다.
  2. 좋은 웹 UI를 제공한다.
  3. 위키(Wiki)를 제공한다.
  4. 이슈 페이지를 제공한다.[5]

데이터 공유

2016년 5월 서울특별시는 행정정보 공공데이터 목록 500만건을 깃허브 사이트에 공유했다.

각주

  1. 깃허브〉, 《위키백과》
  2. 2.0 2.1 2.2 2.3 에이콘아카데미, 〈깃(Git)과 깃허브(GitHub) 궁금하시죠?〉, 《네이버 블로그》, 2019-04-25
  3. Hosang Jeon, 〈오픈소스 기여를 위한 GITHUB 개념정리〉, 《Guruble 블로그》, 2014-02-27
  4. 3.1 Git 브랜치 - 브랜치란 무엇인가〉, 《깃》
  5. 에이콘아카데미, 〈[프로그래밍 깃(Git)으로 빠르고 편리하게 프로젝트 관리하자]〉, 《네이버 블로그》, 2017-04-26

참고자료

같이 보기


  검수요청.png검수요청.png 이 깃허브 문서는 블록체인 솔루션에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.