Git은 필수다. 그냥 폴더 째 압축하고, copy해서 폴더 이름을 바꾸고 하면서 버전을 관리해 본 사람은 git을 사용하면 신세계를 경험하게 될 것이다. SVN과 같은 CVCS(Centralized Version Control System)를 경험해 본 사람도 마찬가지다. 서버에 branch를 만들어야만 버전을 올릴 수 있는 CVCS에서는 정말이지 “잘 정리된, 거의 완성된 코드"들만 관리되기 마련이다. Git이나 Mercurial 같은 DVCS(Distributed Version Control System)는 정말이지 개발자의 필수품이다. Commit이 서버와 관계 없이 로컬에서 이루어진다. 그러니 수시로 commit하면서 기록을 남기고, 여러 기능을 동시에 개발할 때는 여러 브랜치를 checkout 받으면서 코딩한다. GitLab과 같은 원격 repository를 제공하는 서비스(나는 몇 가지 이유로 GitHub, BitBucket보다 GitLab을 선호한다)들은 멋진 UI로 merge를 요청(Merge Request)하고, 해당 코드 line에 직접 comment 받으며 코드를 개선할 수 있도록 도와준다. 정말이지 이거 없이 예전에는 어떻게 개발했나 싶다.

그런데 git은 진입장벽이 좀 있다. 첫째는 console에서 쓰기를 권장하는 가이드가 많다. 물론 console에서만 잘 써도 충분하다고 한다. 그런데 나는 console에서는 적응 못 했다. Branch가 올라가고 하는 개념 자체가 graphical하다보니 GUI tool 없이 접근 자체가 쉽지 않았다. 그리고 git은 맥가이버 칼 같다. 좀 과하다. 기능이 너무 많다. 그래서 git의 개념을 모르고 사용법만 조금 익힌 사람들이 이상한 상황을 만들어 놓고서 “Git 너무 어려워요! 하던 작업이 다 날아갔어요!” 이런다.

GitKraken, 이렇게 생겼다

그래서 GitKraken을 추천한다. GitKraken은 node.js 위에서 만들어진 GUI application이다. GitKraken은 git의 다양한 기능들을 유저 관점에서 encapsulation 해 놓은 것이 단점이다. 예를 들어, git에서는 branch 없이 commit을 checkout받을 수 있다. 하지만 이렇게 되면 detached head status가 되고, 이 때 commit한 내용은 다른 branch를 checkout받을 때 날아가게 된다(물론 별도로 branch나 tag를 달아놓지 않은 경우에 대한 이야기다). GitKraken은 branch 없이 commit을 checkout 받을 수 없게 해 놓았다. 무조건 branch를 만들어야 checkout 받을 수 있다. 이는 중간에 있는 임의의 commit을 checkout받아서 확인해 보려고 할 때도 branch를 생성해야 하고, 확인한 후 다시 삭제해야 하므로 불편한 점일 수 있다. 그러나 detached head가 만들어내는 무수한 문제 상황들을 생각하면 충분히 감수할 수 있는 불편이다. 또한 ctrl + z, ctrl + y로 실행 취소, 되돌리기를 할 수 있다(빨리 누르면 오동작하는 듯 하다!). 사실 이렇게 취소할 경우가 많지는 않아서 잘 쓰고 있지는 않은데, 처음 배우는 입장에서는 이만큼 반가운 기능이 없을 것 같다.

앱 안에서 merge conflict을 직접 텍스트를 편집하며 해결하려면 pro version을 구매해야 한다. Multi 계정을 사용하는 경우에도 그렇고. 나는 아직 무료 버전으로 잘 쓰고 있다. Merge conflict는 여차하면 그냥 commit하고 ammend commit으로 해결하면 그만이다. 무료 버전을 사용해 보는걸 강주한다. 특히 git 초보들에게는 더더욱.

Git을 배우려면,

  1. https://rogerdudler.github.io/git-guide/index.ko.html 을 쭉 훑어 보고, (GitKraken 쓰면 그만이니 command에는 집착하지 마시라…)
  2. http://learnbranch.urigit.com/ 에서 실습해 보자. 물론 Command로 실습해야 하지만, 개념을 익히기에 가장 좋은 방법인 것으로 보인다.

위 두 site는 친절하신 한국 개발자께서 한글로 번역해 주셨다. 참 고마운 일이다. 처음에 개념을 읽힐 때는 한국 사람들은 한글로 보는게 제일 빠르다. 물론 영어로 봐도 빠를 정도로 영어를 익힌 사람은 제외. https://backlogtool.com/git-guide/kr/ 요론 사이트도 있다. 역시 한글이라 도움이 될 텐데, 디자인이 그리 예쁘진 않아서 아직 살펴보지는 않았다.

나는 처음부터 Pro Git 문서를 읽으며 시작했다. 물론 오래 걸렸다. 익숙해 진 건 한참을 쓴 뒤다. Git에 익숙해져도 끝이 아니다. GitHub Workflow의 진의(?)를 깨닫기까지는 좀 더 삽질이 필요하다…

To be continued…

결론: GitKraken은 꽤 괜찮은 git client다.