Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

[Book] Pro Git

Pro Git

Pro Git - 10점
Chacon, Scott
Springer-Verlag New York Inc
박창우, 이성환 옮김

Pro GitGithub에서 일하는 Scott Chacon이 쓴 책으로 어떻게 출판사에서 이를 허락했는지 모르지만 Apress의 책으로도 출판되면서 Pro Git사이트에서 무료로 공개되어 있습니다. 이 책은 Github의 저장소에서 관리되고 있는데 올 초 pismute님과 lethee님이 이 책을 번역해서 공개했습니다. 정식으로 국내에 출판된 책이 아니기 때문에 위의 책 정보는 원서를 기준으로 링크했지만 무료로 공개된 번역서를 읽었습니다. 무료번역서는 여기서 다운로드 받을 수 있으며 현재 최신 버전은 2012-02-26에 빌드한 버전입니다.

결론부터 말하자면 이 책은 내용이 너무 좋은데다가 무료로 번역임을 감안하지 않더라도 번역의 품질이 좋은 편입니다. 국내의 유일한 Git책인 Git, 분산 버전 관리 시스템가 Git을 사용하는데 중점을 두고 있다면 Pro Git은 Git을 이해하는데 중점을 두고 있다고 느껴집니다. 이 2가지 접근에 대해서 어느 쪽이 과연 좋은가는 저도 잘 모르겠습니다. Git을 공부할 때 Git에 동작방식이나 내부 구조, DVCS의 특성들까지 다 이해하면서 배운다면 참 좋겠지만 저같은 경우는 기본적인 명령어인 clone, commit, push등으로 기본적인 DVCS를 다루다 보니 활용하는데 한계를 점점 느끼면서 내부적인 부분이 궁금해진 경우인데 마침 이 책이 번역되어서 읽었는데 궁금한 상당부분이 해소되었습니다.

이 두 가지 접근은 사실 둘다 괜찮은 방법이라고 생각합니다.(어쩌면 개개인의 성향에 따른 것일 수도 있겠습니다.) 물론 Pro Git에서도 기본적인 Git의 사용법은 당연히 다루고 있고 2장 Git의 기초와 3장 Git 브랜치를 읽고 나면 기본적인 사용을 할 수 있습니다. 하지만 앞에서 얘기했듯이 Git을 이해하게 하는데 중점을 두고 있기 때문에 설명할 때도 처음 Git을 배운다면 약간 어려울 수 있는 개념들이 함께 등장하고 있습니다. 설명이 좋지 않다는 얘기도 아니고 이 부분은 Git을 쓰려면 꼭 배워야 하는 개념들이지만 저같은 경우는 간단한 명령어들은 어느정도 쓰고 있었기에 가볍게 보면서 읽을 수 있었지만 아주 모르는 사람들이 보면 어려울 수도 있겠다는 생각이 듭니다.(사실 일단 Git 자체가 어렵습니다. ㅎ) 하지만 이 말은 최초 입문서로 적당한가? 하는 의문일 뿐 Git을 좀 제대로 이해하려면 반드시 Pro Git을 보라고 추천하고 싶을 정도로 내용과 설명이 깔끔합니다.



4장에서는 Git 서버를 구성하는 방법이 나옵니다. 여기서 Git서버를 사용하는 방법과 Git서버 프로그램들이 GitosisGiolite등을 소개하고 있습니다. 5장에서는 DVCS인 Git으로 팀 개발을 할 때 어떤 Workflow를 적용해야 좋은지를 몇가지 방법을 비교하면서 설명해 주고 있습니다. 개인적으로는 이 두 챕터는 약간 흐럽을 끊지 않나 생각합니다. 사실 이 부분의 대한 고민은 상당히 Git을 사용해 본 뒤에 하게되거나 실제로 팀에 적용할 때 고민할 부분인데 일단 GitHub라는 걸죽한 무료 호스팅이 존재하기 때문에 보통은 기본 명령어후에 좀 더 고급의 사용을 고민하게 되지 않나 생각합니다.

이부분은 6장부터 나옵니다. 히스토리를 조회하고 커밋메시지를 관리하거나 rebase, stashing같은 약간은 고급(?) 명령어들을 다뤄주고 있습니다. 상황을 예시로 잘 들어주면서 설명해 주기 때문에 이해하기가 좋고 책을 참고하면서 실제로 활용할 수 있을 정도로 잘 설명되어 있습니다. 7장은 Git의 설정과 Git Hook을 다루는 방법을 설명하고 있는데 단순히 사용방법뿐만 아니라 어떻게 Hook을 작성해서 추가하는지 자세히 보여주고 있습니다. 이런 부분들은 다른 곳에서는 많이 안다뤄주기 때문에 특히 유용합니다. 8장에서는 기존의 Subversion을 사용하고 있다면 git-svn으로 어떻게 혼합해서 사용할 수 있는지와 아니면 Subversion등의 VCS를 Git으로 변환하는 과정을 보여주고 있씁니다. 8장은 사실 git-svn말고는 많이 쓰진 않을 것 같지만 팀에 도입하려면 한번정도는 겪을만한 상황이라고 생각하고 있습니다.

개인적으로 가장 좋았던 장은 9장입니다. 이 장에서는 Git의 내부 구조를 다루고 있습니다. Pro git에서 언급하는 용어대로라면 앞에서 계속 배웠던 명령어들은 Porcelain명령어로 사용자가 쉽게 쓸 수 있도록 제공되는 언어이고 내부적으로는 저수준인 Plumbing를 사용하고 있습니다. 9장에서는 Git을 사용하면서 clone하고 커밋하고 푸쉬할 때 Plumbing명령어나 직접 코드를 작성해서 생성해 보면서 Git이 실제로 내부에서는 어떻게 동작하는지를 보여주고 있습니다. 어려운 내용이라 한번 보고 죽~ 이해하기는 어렵겠지만 정말 다른데서는 거의 설명되지 않은 부분이기 때문에 정말 유용한 부분이라고 생각하고 9장을 이해하면 Git의 활용폭도 크게 늘어날 것으로 보입니다.



저는 Git을 꽤 좋아하는 편인데(잘 쓰진 못하더라도) 작년까지는 어디서나 다 git만 썼으면 좋겠다고 생각했습니다. 그만큼 Git이 좋았고 Git을 쓰면서 Subversion이 얼마나 구린 VCS인지를 깨닫게 되었습니다. 하지만 올해는 좀 생각이 달라졌는데 Git을 제대로 쓰려면 공부를 상당히 많이 해야 되고 저야 좋아하니까 이런 투자를 할 가치를 느끼지만 Git을 팀에 도입하자고 적극적으로 나서면서 앞으로 Git을 공부하세요! 라고 다른 사람에게 강요(?)하는 건 어렵겠다라고 생각하고 있습니다.(아마 팀에 상당수가 Git에 대한 호감이 있지 않다면 도입은 아주 어려운 일일것입니다. 대부분의 새로운 것의 도입이 그렇긴 하지만요.) 그럼에도 현재 대부분의 오픈소스가 Git으로 이동하고 있기 때문에 Git을 능수능란하게 사용하지는 못하더라도 기본적인 사용은 꼭 알아두어야 할 필요가 있다고 봅니다.

아무튼 Git을 좀 더 이해하고 싶고 잘 쓰고 있지만 Pro Git은 꼭 읽어보시라고 추천하고 싶습니다. 이런 양질의 자료를 무료로 번역해서 공개해 주신 pismute님과 lethee님께 정말 감사드립니다. 앞으로 Git 사용할 때 완소 자료가 되겠네요 ㅎ
2012/04/08 03:46 2012/04/08 03:46