hello3***
2016-10-03

Git은 단순한 빌드 소프트웨어가 아니다. 이 책은 버전관리에서 사람을 우선으로 하는 접근법을 실용적으로 풀어내고, 이를 통해 Git을 중심으로 하여 더 효과적으로 팀 작업을 하는 방법에 대해서도 설명한다. 또한 계획을 세우는 방법을 설명하고, Git 워크플로우를 적용하는 방법도 설명한다. Git 워크플로우는 프로젝트 목표를 완수하는 데 큰 도움이 된다. 팀 내부의 즉각적인 요구에 유연하게 대응하고 팀이 지속적으로 성장할 수 있게 한다.
이직을 위해 인터뷰를 보면 가끔 Git을 사용해본적이 있냐는 질문을 듣곤한다. 그만큼 유경험자를 찾고 새로운 기술을 프로젝트에 도입해보고자 하는 프로젝트 매니저들의 니즈는 항상 존재하는 듯 하다. 하지만 정작 주변에서 Git을 사용해서 엔터프라이즈급의 프로젝트를 수행하고 있는 곳은 보기 드물다.
이 책은 팀프로젝트를 위한 Git의 활용방법에 대해 솔루션과 팁을 제시해주는 책이다. 팀프로젝트에 Git을 도입하기 위해 고민하고 있는 관리자들에게 프로젝트를 어떻게 구성하고 이끌어나가야 할지 실마리를 제시해 줄 책인것같다.
(Git에 대해 기초적인 학습을 마친 개발자라도 이를 좀더 활용하기 위해 이 책을 참고하면 좋을 것같다. )
책의 세부적인 내용은 다음과 같다.
1장에서는 훌륭한 팀을 만들고 팀내 역할을 배정하는 방법에 대해 설명한다.
2장에서는 Git 저장소의 접근권한 허가/거부를 결정하는 다양한 종류의 승인 방법에 대해 나온다.
3장에서는 팀이 진행하고 있는 개별 아이디어를 어떻게 브랜치를 이용하여 분리하는지를 보이고 GitFlow와 같은 일반적인 브랜칭 전략을 다룬다.
4장은 자신만의 문서 작성법과 간단한 소프트웨어 상품 제작 및 배포방법에 대해 설명한다.
5장부터는 개발자들에게 유용한 Git 명령어의 사용방법등에 대해 구체적으로 설명하는데,
5장은 분산 버전 관리의 기본을 다룬다. 저장소를 생성하고, 커밋, 브랜치, 태그를 이용하여 로컬에서 파일 변경사항을 추적하는 방법이 나온다.
6장은 히스토리 수정에 대해서 다루며
7장은 과거의 변경점을 추적하고, 공유저장소에 코드를 올리고, 로컬저장소에 다른 사람들의 업데이트 내용을 적용하는 법을 설명한다.
8장에서는 팀내 코드 검토를 진행하는 방식에 대해서 나오며 공통의 검토방법론을 위한 명령어를 다루고 자신의 팀에 맞게 커스터 마이징하는 방법이 제안된다.
9장에서는 Git을 이용하여 버그를 찾아내는 고급 기술을 설명한다.
10장부터는 현재 시중에 나온 유명 코드 호스팅 시스템 사용법에 대해 나온다.
10장에서는 Github에서 오픈소스 프로젝트를 시작하고 관리하는 방법에 대해 설명한다.
11장에서는 비공개 저장소에서 공동 작업하는 방법이 나온다.
12장에서는GitLab을 통해 자신만의 인스턴스를 호스트하고 이를 통해 프로젝트를 진행하는 방법을 설명한다.
현재까지도 현업에서는 SVN을 많이 사용하고 있다. 로컬 저장소와 공유 저장소에 두번 반영해야하는 번거로움과 새로운 기술을 팀원들에게 적응시키는데 드는 기회비용까지 감안했을 때, Git을 팀프로젝트에서 정착시키기 위해서는 구성원들을 설득시킬 만한 Git의 장점이 어필될 필요성이 대두되어온게 사실이다. 나 또한 굳이 그런 비용을 감수해가면서 까지 Git을 사용해야되는가에 대한 의문을 품어왔다. (이제까지 SVN으로도 잘해왔잖아?)
하지만 이 책을 통해서 Git을 이용한 팀프로젝트가 SVN에서 때때로 부딪히는 상황을 해결하고 브랜치를 관리하는데 좀더 효과적일 수 있다는 생각이 들었다. (가령, 새로운 기능을 개발할 때 상용프로젝트에 반영할 시점을 생각해서 브랜치를 따서 작업하는 경우, 결국 나중엔 merge작업을 하게 되는데 SVN에서 기존의 로컬 작업과 비교하기 위해 로컬 히스토리를 참고해야하는 경우가 있다. 그치만 로컬 히스토리 저장시점은 일정하지않고 모든 시점을 다 뒤져봐야하는 불편사항이 있다. 로컬저장소를 익숙하게만 사용할 수만 있다면 git의 fork(clone), 로컬 저장소 시스템이 좀더 안전하고 편리한 방법이 되지 않을까?)
그리고 Git을 통해서 오픈소스 프로젝트를 어떻게 시작하고 관리할 수 있으며 그런 오픈소스 프로젝트의 워크플로우는 어떻게 되는지 막연하게만 알고있던 사실을 구체적으로 알수 있어서 좋았다. 파트2에서 명령어에 대한 부분도 설명하고 있기 때문에 Git을 팀프로젝트에 도입하고자 하는 상황에서 팀원들이 다 같이 스터디 하기도 좋은 책인것같다. 내용이 참 좋은데 이를 말로 표현하기가 참 어렵다..