Skip to content

GitHub #
Find similar titles

Git이란 무엇인가 #

GitHub는 Git버전 컨트롤 시스템에 기반 한 오픈소스 프로젝트를 위한 소셜 저장소이다. 이것의 주요 기능은 프로젝트에서 코드의 공유와 협업을 쉽게 하는 것이다. 하지만 또한 훌륭한 학습도구이기도하다.

  • 버전관리를위한 도구이다.
  • 리눅스 커널의 창시자, 리눅스 토발스가 BitKeeper라는 상용 도구를 무료 사용하여 버전 관리를 했었는데 무료 사용이 제고되면서 직접 만들게 되었다.

버전관리란 무엇인가? #

  • 소스하나 또는 묶음을 하나의 버전으로 간주하여 관리한다는 것이다.
    • 파일/폴더를 추가/수정/삭제하여 사람이 직접 묶음을 버전으로 관리하자고 지정한다.
    • 원하는 때 예전 버전 내용 전체를 되돌려 볼 수 있다.
    • 특히 복잡한 코드를 개발할 때는 이전버전과 비교해 보기가 쉬워진다.

버전관리는 언제 사용하나요? #

  1. 개발 협업을 위해 사용한다.
    • 전체 개발 소스를 공유하면서 개발 파트를 나누어 공유한다.
    • 같은 모듈을 개발하더라도 소스를 서로 공유하면서 개발한다.
      • 이때, 특정 파일은 변경하지 못하도록 lock을 걸 수도 있다.
    • 권한 설정을 통해 각 개발자 별로 접근 가능한 소스 목록도 제어하기도 한다.
  2. 개별적으로 버전 등 이력을 관리하기 위해 사용하는 경우도 있다.
  3. 버전관리되는 내역 전체를 오픈 소스로 공유하기도 한다.

Git이외의 다른 버전 관리도구들은 무엇이있나요? #

  • 오픈소스 버전 관리도구
    • CVS : 90년대 말 - 2000년대쯤 사용한 버전관리 도구이다. *(SVN)이 대중화되면서 쓰는 사람들이 많이 줄었다고 한다.
    • Subversion(SVN) : 여러 파일 업로드 중 실패 시 롤백(원자성,atomicity), 이진파일 지원, rename(파일이름변경도 이력관리)등 CVS를 대체 가능한 많은 기능이 추가되어 많은 사용자들이 CVS에서 전환된 것으로 알려져있다. 오늘날과 같이 Git이 많이 사용되기 전 가장 보편화되었던 버전 관리 도구이다.
    • Mercurial : Git과 비슷한 류의 분산 버전 관리 도구라고 한다.
  • 상용 버전 관리 도구
    • Microsoft Visual SourceSafe
    • Team Foundation Server...등등..

"분산"버전관리 도구는 무엇이 다른가요? #

  • 이를 설명하기 위해 보통 SubversionGit을 많이 비교한다.
  • Subversion은 버전관리를 하려면 반드시 Subversion서버와 통신하여 버전을 관리해야 한다.
  • 반면, Git는 네트워크가 되지 않아도 우선 자신의 컴퓨터에서 버전관리를 하고 네트워크 통신이 될때 서버와 통신해도 된다.

Git명령어를 꼭 익혀야 하나요? #

  • 적어도 초창기에는 그랬다. 물론 알면 도움이 많이되지만, 요즘엔 명령어들을 몰라도 pull, push, commit등의 기본개념만 알면 쓸수 있는 좋은 GUI들이 많다.
    • TortoiseGit, gitk, sourcetree....
    • 그래픽 화면으로 나와있어 명령보단 쓰기가 편하다.

Git용어 #

  • Pull
    • Git 저장소 서버로부터 내 컴퓨터 로컬로 버전 정보 전체를 가져온다.
  • Commit
    • 추가/수정/삭제된 폴더/파일들을 1개 버전으로 간주하여 내 컴퓨터 로컬에 버전 정보를 기록한다.
  • Push
    • 내 컴퓨터 로컬에 저장되어 있던 버전 정보를 Git저장소 서버로 올린다.
  • Branch
    • 버전들을 묶어서 Branck라고 한다.
    • 기본은 master이다.
    • 내 컴퓨터 내에 있는 Branch는 로컬 branch, 외부 서버에 있는 Branch는 리모트 branch라고 한다.
  • Tag
    • Branch는 왔다갔다하면서 각각에 대해 내용을 변경하고 버전 관리까지 가능하다.
    • 반면 Tag는 특정 버전 위치에 대해 나중에 쉽게 찾아갈 수 있도록 이름을 지정해 놓은 것 뿐이다.
  • Merge
    • Git로 버전 관리를 하다보면
      • 여러 개발자가 각자 개발한 버전을 합치는경우
      • 서로 다른 Branch를 하나로 합치는 경우
    • 이러한 두가지 경우가 생긴다. 이런 경우, 합치는 과정을 Merge라고 한다.
  • Rebase
    • Git과거 이력 편집이 목적이다.

GitHub는 무엇인가? #

  • git을 호스팅 해주는 웹 서비스 이며, git저장소 서버를 대신 유지 및 관리해주는 서비스이다.
  • 오픈소스 프로젝트는 무료이며, private프로젝트는 유료이다.
  • 다른 유저들과 함께 온라인으로 하나의 프로그램을 제작하는 것도 가능하여, 많은 오픈소스 프로그램들이 github을 통해서 전세계 유저들에 의해 제작되고 있다.
  • http://www.github.org
    • Git을 이용하는 프로젝트들을 위해 원격저장소를 제공한다.
    • Git저장소를 직접 설치하지 않고 GitHub를 통해 사용 가능하다.
    • 그런데 GitHub는 단순히 Git소스 저장소만을 의미하지는 않는다.

몇 가지 좋은 GitHub의 기능 #

  • 좋은 Web UI를 제공한다.
  • gh-pages Branch에 파일을 올리면 [계정명].github.io/[저장소명]홈페이지가 완성된다.
  • 여러 질문과답변, 이슈사항을 기록하기위한 Issues 페이지를 제공한다.
  • Wiki를 제공한다.
  • 월정액으로 돈을 내면 공개되지 않은 사설 저장소를 제공한다.
  • 돈을 더 내면 권한 관리가 가능한 organization 저장소를 제공한다.

GitHub-fork #

  • 다른 사람의 저장소를 가져와 나의 저장소로 만들어 놓는 기능이다.

Git설치 및 사용방법 #

  1. 사이트(http://git-scm.com)에서 git프로그램을 다운로드 한뒤, 설치를 진행한다.
  2. github가입(https://github.com)에 접속하여, 회원가입을 한다.

Incoming Links #

Related Data Sciences #

0.0.1_20140628_0