지극히 개인적인 공부 노트/근-본(Roooooooooooot)

[Git] '깃'의 시작

AS J 2021. 8. 7. 14:22
지옥에서 온 관리자, 깃

1. 기원

1) 누가

리누스 토르발즈(Linus Torvalds)

2) 언제

2005년 4월 3일 개발 시작, 4월 6일 깃 프로젝트 발표, 4월 7일 자체 호스팅 진행, 12월 21일 1.0 릴리스

3) 어디서

토르발즈가 직접

4) 어떻게

아래 기준에 맞추어

- 빠른 속도
- 단순한 구조
- 비선형적인 개발(수천 개의 동시 다발적인 브랜치)
- 완벽한 분산
- Linux 커널 같은 대형 프로젝트에도 유용할 것(속도나 데이터 크기 면에서)
- 변질에 대비한 매우 강력한 안전 기준을 포함할 것

5) 왜

리눅스 커널(Linux Kernel)은 굉장히 규모가 큰 오픈소스 프로젝트였다. 리눅스 커널은 패치(patch)와 단순 압축 파일로만 관리했는데, 2002년에 비트키퍼(BitKeeper)라고 불리는 상용 DVCS(Distributed Version Control Systems, 분산 버전 관리 시스템) 를 사용하기 시작했다. 하지만 비트키퍼의 저작권 보유자 래리 맥보이(Larry McVoy)는 앤드루 트리젤이라는 사람이 비트키퍼 프로토콜을 리버스 엔지니어링(구조를 분석하고, 분해해서 다시 비슷한 기능을 하는 새 것으로 구현하는 것)했다고 주장하며 이후 제품의 자유 이용을 철회했다. 이때 리누스 토르발즈를 포함한 리눅스 커널의 수많은 개발자들은 비트키퍼와 같은 자신만의 분산 버전 관리 시스템을 원했으나 당시 사용 가능했던 자유 시스템 중 어느 것도 자신의 요구를 충족하지 못했다.

토르발즈는 위의 "5) 어떻게"의 기준, 규정에 맞추어 당시 존재했던 버전 관리 시스템을 제거했고, 2.6.12-rc2 리눅스 커널 개발 출시 직후 직접 자신이 작성해 나가기 시작했다. 그렇게 깃의 개발은 2005년 4월 3일에 시작되었고, 토르발즈는 4월 6일에 이 프로젝트를 발표, 4월 7일에 자체 호스팅을 진행했다. 여러 브랜치의 최초 병합은 4월 18일에 시작되었고, 6월 16일엔 깃으로 커널 2.6.12 릴리스를 관리했다. 이후 2005년 7월 26일에 토르발즈는 프로젝트의 주 기여자인 주니오 하마노에게 유지보수를 인계하였고, 2005년 12월 21일에 깃 1.0 릴리스를 진행했다.

6) 일화

리눅스(Linux)나 컴퓨터 엔지니어링을 잘 아는 사람이라면 깃의 개발을 시작한 '리누스 토르발즈'라는 이름에 익숙할 것이다. 이 사람은 바로 리눅스(Linux) 운영 체제의 창시자다. 리눅스는 현재 웹과 서버 등의 개발 분야에서 깊은 부분까지 뿌리잡고 있는 운영 체제이자, 오픈 소스 프로젝트의 가장 유명한 사례이다. 이런 리눅스를 창시한 사람이 깃까지 개발을 했다는 사실에 놀라지 않을 수 없었고, 존경스럽다는 생각이 들었다. 자신이 필요하면 직접 만들어보는 진정한 개발자이자, 현재까지 수많은 개발자들의 편리한 버전 관리와 협업을 도와주는 개발자들의 개발자라고 느꼈다.

또, 토르발즈는 깃을 처음 세상에 소개하면서 '깃은 지옥에서 온 관리자'라고 말했다고 한다. 아마 이는 당시 깃이 개발된 배경, 그리고 개발자들의 자유 소스 분산형 버전 관리 시스템에 대한 열망 등을 지옥이라 빗대어 한 말이라고 생각된다.

 

2. 활용

깃의 개발자가 오픈 소스의 가장 대표적인 사례, 리눅스의 창시자와 같은 인물이어서 그런 것일까? 깃 또한 기본적으로는 리눅스와 깃의 명령어만 알고 있다면 당연히 무료로 사용할 수 있다. 깃이 제공하는 핵심 기능은 버전 관리, 백업, 협업으로 나눌 수 있다. 간단하게 개인의 입장에서는 문서와 그 문서의 버전을 관리할 수 있으며, 개인 프로젝트의 용도로도 이용할 수 있다. 그룹의 입장에서는 그룹 프로젝트를 모두가 접근하고, 쉽게 협업이 가능하며, 누군가 버전을 수정했을 때 제대로 명시를 한다면, 다른 동료들도 함께 확인하며 효율적이고 합리적인 프로젝트 진행이 가능하다.

깃(Git) 자체는 리눅스처럼 깃 배시와 같은 Shell을 통해 CLI(Command Line Interface) 형식으로 관리가 가능하다. 이 형식에서는 리눅스와 깃의 명령어를 알고 있어야 하기 때문에 CLI에 익숙하지 않은 사람은 적응하는 것이 쉽지 않다. 그런 사람들을 위해 깃허브, 깃랩과 같은 서비스가 존재한다. 웹과 애플리케이션을 통해 제공되는 GUI(Graphical User Interface) 형식으로 깃의 핵심 기능을 구현할 수도 있다.