본문 바로가기
카테고리 없음

문과생을 위한 Git - 01. Why Git?

by 싸코 2020. 2. 7.

01. Why Git?

1. 커지는 협업의 중요성

Git은 어렵습니다. 짜증납니다.
하지만 오늘날과 같이 개발자는 물론 기획자, 디자이너들도 Git을 사용하는 시대가 됐습니다.
실제로 많은 분석 및 개발 프로젝트에서 효율적인 협업을 위해 Git을 사용하고 있습니다.

 

협업 (Collaboration)
많은 사람이 일정한 계획 아래 노동을 분담하여 협동적·조직적으로 일하는 것

 

일을 분담해서 하는 작업으로 분업이라고도 말합니다. 우리가 어떤 일을 하게 되면, 공통의 목표를 위해서 일을 쪼개고 각자의 역할과 업무 범위를 정하는 일을 하게 됩니다. R&R을 정하는 것입니다.

 

개발자가 아닌 일반인들도 협업을 위해 사용하게 되었으니...

 

Git을 사용하긴 사용하는데 정확히 어떤 것인지, 어떻게 동작하는 것인지,
어떤 철학을 담고 있는지 이해하면 좀 더 쉽고 즐겁게(?) 다룰 수 있을 것 같아서 그 내용들을 정리해보고자 합니다.

 

대부분의 Git 관련 자료들은 Git이 무엇인지 어떻게 돌아가는지 말하기 보다는
단순 매뉴얼이나 수 많은 명령어를 나열할 뿐이라 도저히 시작할 엄두가 나지 않습니다.

 

Git은 정말 많이 어려울까요?

 

 

 


 

2. 왜 하필 Git인지?

첫 번째, 힙하다

두 번째, 분산환경 하에서 속도가 더 빠르고 독립적인 소스 관리 가능

세 번째, 소스 병합이나 충돌 관리 용이

 


 

 

3. Git에 대한 오해(?), 어려워하는 이유

처음에 살펴보면 Git은 뭐고 Github는 뭐냐는 생각이 들긴 마련입니다. 같은 건데 짧게 다르게 부르는건가 싶기도합니다. Git과 Github은 엄연히 다른 것입니다.

Git은 뭐고 GitHub은 뭐지?

GitHub

Github은 일종의 커뮤니티입니다. 페이스북과 같이 나의 프로필을 올리고 내가 어떤 개발을 하고 있는지 소스나 코드 등을 올리고 블로그 문서나 글 등을 정리해서 올리기도 합니다. 사람들과 함께 이를 공유하기 때문에 커뮤니티 역할을 하는 것입니다.

 

Git

Git은 그 안에 핵심적으로 동작하는 소프트웨어입니다. 개발한 소스코드의 버전 관리를 위한 것이 주된 목적입니다. 기본적으로 command line(검은색 화면으로 글자만으로 뭔가 동작하여 일반인에게는 익숙하지 않은..) 형태로 명령어를 입력해서 동작합니다. GUI 형태로 사용하기 위해서는 별도의 client가 필요합니다.

 

 

 

버전관리 (Version control, revision control)
버전 관리란 동일한 정보에 대한 여러 버전을 관리하는 것 - 위키백과

 

버전관리는 비개발자들에게도 익숙한 용어입니다. PPT 파일을 만들 때 파일 제목 옆에 버전을 붙이면서 새로운 PPT 파일을 만들면서 버전을 관리해본 경험이 있을 것입니다. '파일제목_v0.1.pptx', '파일제목_v0.2.pptx'와 같은 방식으로 말이죠. 그런데 이런 방식으로 관리를 하면 어떤 변경이 있었는지 이력 확인도 어렵고 다른 사람들과 공유하기도 어렵습니다.

 

 

 

 


 

 

4. Git 어렵습니다...

첫 번째, 복잡성

Git이 왜 어렵냐면 Git이 정말 어렵기 때문입니다. ^^
Git은 우리 같은 일반인뿐만 아니라 개발을 하는 개발자분들에게도 처음에는 쉽지 않은가 봅니다.
개발자 커뮤니티나 그런 곳에가서 글을 보면 이전에 사용하던 버전관리 툴과 많이 달라 적응하는데 애를 먹기도 한다고 합니다.
저 역시도 Git 이전에 사용하던 SVN에 익숙해 Git이 이해가 좀 안될 때가 있습니다.

복잡한 형태의 버전 관리를 위해서는

  1. 브랜치를 깔끔하게 유지해야 하며
  2. 이를 위한 브랜치 전략을 세워야 합니다.

 

두 번째, 허술한 추상화

소프트웨어 관점에서 Git은 추상화가 허술하다고 합니다. 무슨 말이냐면 소프트웨어에서 추상화는 어떤 작업을 개념적으로 다루기 쉽게 해주는 것인데, 추상화가 되려면 어려운 작업들이 드러나지 않아야 한다는 것이죠. 추상화가 잘된 예를 들자면, 파일을 삭제할 때 휴지통으로 드래그&드랍 하는 것은 정말 쉬운 일이지만, 그 안의 동작하는 코드나 처리에 대해서는 알지 못해도 되는 것이 있습니다.
하지만, Git은 마치 사용자가 Git의 작동원리를 이미 이해하고 있다고 가정된 상태에서 다루도록 한다는 점에서 추상화가 허술하다고 합니다.

 

세 번째, 비가시성

git은 기본적으로 GUI가 아닌 command line으로 동작한다는 점입니다. 깜깜한 화면에서 코드를 타이핑해가면서 사용하는 것이기 때문에 까다롭습니다. 물론 GUI로 작업을 하도록 했지만 대부분 명령어로 많이 사용합니다. 그리고 사용해야 하는 이 명령어가 75개가 넘습니다...

나의 소스들이 어떻게 관리되고 있는지 감이 잘 오지 않기 때문에 더 어려움을 겪습니다.

댓글