나는 Git에는 꽤 익숙한 편이다. Git을 사용한 지도 꽤 오래되었고 오픈 소스 프로젝트에 관심이 많아서 GitHub에서도 많이 놀다 보니 협업하면서 Git을 사용하고 히스토리를 정렬하고 충돌을 해결하는데도 큰 문제가 없다. GitHub에서 소규모의 오픈소스 프로젝트를 운영하면서 PR을 받기도 했지만 아주 큰 규모의 팀에서 Git으로 협업해보지는 않았지만, 소규모로는 꽤 많이 해보았다.
이 책은 제목이 맘에 들어서 집어 들었다. Git을 쓰고 있긴 하지만 어느 정도 익숙해지니 사용하는 패턴이 고정화되고 그 패턴 내에서 대부분 문제를 해결할 수 있으므로 더 새로운 방법을 찾거나 하진 않게 된다. 주변 개발자들과 얘기해보아도 큰 흐름은 비슷하지만, 세부적인 부분에서는 간단하게는 명령어부터 자잘한 정책까지 다르게 사용하는 것을 알고 있다.
나는 GitHub Flow를 선호하는 편이지만 막상 팀원들과 협업할 때는 불편하거나 생산성을 헤치는 부분도 있고 애매해서 이렇게 하는 게 맞나 하는 생각이 드는 부분도 있었다. 꼭 특정 Flow를 따르게 중요한 건 아니고 예전에는 gitflow를 사용했지만, 나한테는 맞지 않는다고 생각해서 이젠 전혀 쓰지 않지만 gitflow에서 설명한 브랜치에 대한 접근 방법은 꽤 도움이 되었다.
제목이 아무래도 "팀을 위한 Git"이라서 실제로 협업에 대한 다양한 접근이나 해결책에 대한 도움을 좀 얻고 싶었다. 책이 나쁘다고 생각은 안 하지만 나한테는 큰 도움은 안 되었다. 읽고 나서 느낌은 다른 책들이 Git의 명령어 위주로 설명하고 있다면(Git 책을 많이 보진 않았지만...) 이 책은 협업 설명하면서 필요한 Git 명령어를 설명하는 느낌이다. 협업 자체에 아주 비중을 둔다기 보다는 기초적인 접근에서 협업을 설명하면서 그 가운데 Git 명령어를 설명하는 책이다. 난 Git 명령어가 어느 정도 익숙하므로 이해하는데 어렵지 않았지만, 협업과 같이 설명하다 보니 아무래도 초심자한테는 이해하기 어렵지 않나 하는 느낌이 들었다. 실제로 설명 자체가 친절한 느낌은 아니었다.
특히 친절하지 않다고 느껴지는 부분은 명령어를 보여줄 때 git checkout commit
나 git add -patch filename
처럼 나오는 부분이다. 여기서 commit
이나 filename
은 사용자가 입력하는 부분이 아니라 여기에 커밋이나 파일을 입력하라는 건데 다른 표시 없이 명령어처럼 같이 쓰여 있기 때문에 git에 익숙하지 않은 사람이라면 저 명령어 그대로 따라 해보면서 헤매지 않을까 싶다.
다루는 내용은 꽤 많기는 하다. 개발할 때 협업이라는 관점을 설명하면서 프로젝트의 거버넌스 모델을 설명하고 이를 브랜치로 어떻게 접근해서 같이 개발하는지를 설명한다. 사실 QA나 문서화 같은 얘기는 굳이 이 책에 나올 필요가 있나 싶기는 하지만 1부에서는 아주 기초적인 Git 명령어와 협업에서 중요시 해야 하는 일반적인 얘기를 하고 있다.
2부에서는 본격적으로 프로젝트에서 Git을 사용하는 법을 설명하는데 1인 팀으로 사용할 때의 브랜치 사용방법을 설명하고 진행하면서 작업을 롤백하거나 리베이스하는 과정을 설명한다. 1인 이상의 팀에서의 작업을 설명하면서 입장별로 어떻게 Git을 써야 하는지를 보여주고 검토를 하는 과정까지도 설명한다. 여기서 각 플로별로 약간의 브랜치 전략이나 머지 등을 설명하지만 그렇게 유용한 정보는 아니었다 생각한다. 3부에서는 Git을 호스팅하는 GitHub, Bitbucket, GitLab의 사용법을 화면을 보여주면서 하나하나 보여주는데 너무 친절해서 지루한 부분이다. "create 눌러서 프로젝트 창 나오면 제목 입력하고 완료 누르면 만들어진다." 이런 식으로 하나하나 다 설명한다.
Git의 간단한 명령어는 배워서 commit, pull, push 등은 하고 있지만, 실제 사용패턴을 좀 더 알고 싶어한다거나 팀에서 Git을 잘 다루는 사람이 없어서 Git 도입에 어려움을 겪고 있다면 어느 정도 도움이 될 책이라고 생각한다.
Comments