문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. https://git-scm.com/images/logos/downloads/Git-Logo-1788C.png?width=550 [목차] == 개요 == > 오픈소스계의 영원한 아이돌 리누스 토발즈는 리눅스 커널을 관리하는 기존 툴이 엉망인 것에 [[내가 해도 이것보단 잘 하겠다|너무 빡친 바람에 git이라는 소스관리 툴을 만든다.]] 그게 리누스에게 얼마나 깊은 빡침이었는지, 단 2주만에 완성하는 기염을 토했다. (그러고는 후에 “git 만드는게 제일 쉬웠어요”라는 인터뷰로 나와 같은 빠돌이를 지리게 했다). >- [[http://sangminpark.wordpress.com/2013/04/22/%ec%98%a4%ed%94%88%ec%86%8c%ec%8a%a4%ec%9d%98-%ec%8a%b9%eb%a6%ac/|오픈소스의 승리]] 중에서. [[리누스 토르발스]]가 개발한 분산형 버전 관리 [[프로그램]]. Git은 토르발스가 [[리눅스]] 커널 관리를 위해서 개발한 것인데, 매우 빠른 속도[* 방대한 리눅스 커널 소스코드를 생각해보라. 속도 문제가 매우 중요해질 수 밖에 없다.]와 분산형 저장소 지원이 특징이다. 오픈소스 개발의 특성상 여럿이 달려들어 자기 맘에 드는걸 하기도 하며, 또한 뭘 하나 잘못 붙였다 이상한 걸 건드려 망하기 쉬운데, Git는 이런 환경의 특성에 맞게끔 잘 만들어져 있다. Git 자체는 [[오픈소스]]이며 저장소는 [[https://github.com/git/git]]이다.[* 대형 프로젝트 답지 않게 README가 허접스럽고 소스코드도 폴더로 분류되지 않고 난잡하다. 프로젝트 최상단에 표시된 대로 배포 전용 리포지토리라 그런 듯 하다.] 2010년 이후로 토르발스씨는 더 이상 메인 컨트리뷰터로 활동하지 않고 리포지토리를 다른 사람에게 넘긴 상태. 현재 gitster와 peff 등이 메인 컨트리뷰터로 활동하고 있다. 설령 토르발스가 리눅스를 개발하지 않았더라도, 이것을 개발함으로 인해서 존경을 받았을지 모른다. 오픈소스는 [[공산주의]]라고 까던 [[MS]]가 Git을 잘 써먹고 있으며, [[페이스북]], [[트위터]], [[모질라 재단]] 등에서도 Git를 잘 써먹고 있다. 국내에서 유명한 파일 시스템 기반 php 위키엔진인 [[모니위키]]도 Git으로 [[https://github.com/wkpark/moniwiki|관리]]되고 있다. Git는 다음과 같은 체제를 갖고 있다. 일단 Git의 작업 폴더는 전체 기록과 각 기록을 추적할 수 있는 정보를 포함하고 있는 저장소이다. 즉 자기 컴퓨터에 모든 파일을 다 받아서 하는 셈. 위키로 치자면 위키 전체를 다 받아서 수정하는 것과 같다.[* git이 아니더라도 DVCS(분산 버전관리 시스템)에 해당하는 Mercurial이나 Bazaar도 해당하는 사항이다.] 작업이 끝나면 Git 원격 저장소로 다시 발행하는데, 여기에도 원 저장소를 보호하기 위한 가지치기가 있어 가지의 개발이 완료될 시 원 저장소와 합칠 수 있으며, 또한 개발 중간중간 꼬리표를 매겨 개발을 더 수월하게 할 수 있다. 이런 강력한 Git를 호스팅 해주는 [[Github]]란 곳이 자유 소프트웨어의 성지로 부각되고 있다. Github에 대한 자세한 사항은 해당 항목 참조. "비공개 프로젝트가 필요한데 유료라 쓰기 애매하다 + 팀원이 몇 명 안된다"같은 상황이라면 [[https://bitbucket.org/|BitBucket]]도 괜찮은 대안이 될 수 있다. 이쪽은 5명[* 메일로 회원을 ~~[[다단계]]~~초대하면 8명까지 가능.] 이하가 참여하는 프로젝트라면 비공개 프로젝트도 무료로 생성 가능. 이러한 외부에서 제공되는 서비스 형태가 아닌, 설치형 Git 서버는 [[리눅스]] 서버라면 별다른 추가 프로그램 없이 리눅스의 기본 프로그램(SSH 등)과 배포본에 들어있는 패키지 만으로도 서버를 구동할 수 있다. 그 밖에 유닉스 계열 서버에서도 손쉽게 설정할 수 있다. 그런데 윈도우라면 쉽게 답이 나오지 않았는데, [[https://github.com/takezoe/gitbucket|gitbucket]] 이라는 JVM 기반에 Scala 로 GitHub 을 흉내내어 작성된 오픈소스 프로그램이 등장했다. JVM 구동으로 메모리를 많이 먹는 단점을 제외하면 HTTP는 물론, ~~윈도우에서 운용하려면 매우 번거롭고 짜증나는~~ SSH와 메일 알림 같은 여러 서버 기능을 자체적으로 지원하며, GitHub 의 상당히 많은 기능을 매우 비슷하게 구현해 놓았기 때문에 GitHub을 쓰던 사람이라면 거의 그대로 사용할 수 있고, 그렇지 않더라도 GitHub 처럼 매우 쉽게 쓸 수 있다는 장점이 있다. 게다가 TFS 2013부터는 아예 Git 저장소 기능을 기본적으로 제공한다. 자세한 것은 [[http://blogs.msdn.com/b/mvpawardprogram/archive/2013/11/13/git-for-tfs-2013.aspx|이곳]]과 [[https://msdn.microsoft.com/en-us/Library/vs/alm/Code/git/overview|이곳]] 참고. 비주얼 스튜디오에서도 직접 지원하며, Git을 바로 쓸 수도 있고 SourceTree같은 외부 툴을 사용하기에도 문제가 없다. == Git 사용법 배우기 == 인터넷에 공개된 자료가 매우 많다. * [[http://rogerdudler.github.io/git-guide/index.ko.html|간단히 보는 git 사용법]] * [[http://backlogtool.com/git-guide/kr/intro/intro1_1.html|누구나 쉽게 이해할수 있는 Git 입문]] * [[http://learnbranch.urigit.com/|Git 브랜치 배우기 튜토리얼]] * [[http://dogfeet.github.io/articles/2012/progit.html|progit]] github의 CIO가 직접 쓴 책을 번역한 자료. * [[http://www.insightbook.co.kr/post/5633|책]]으로도 나와 있다. == 기타 == [[리누스 토르발스]]는 다른 버전관리 시스템인 [[Subversion]]을 아주 싫어하여, 대놓고 깐다. [[http://www.youtube.com/watch?v=4XpnKHJAok8|구글에서 한 GIT 강연]] Git 문서로 돌아갑니다.