서론
보통 학부생 수준에서 협동 프로젝트를 시작할 때 가장 많이사용하는 것이 Git이다.
하지만 Github가 필요하다! 라는 것은 알고 있지만, 막상 인터넷에서 찾아보면 Git에 대한 설명이 어려운 경우가 많다. 본인도 Github에 대한 검색을 학부생 2학년때 하다가, 분산버전 관리 시스템이라는 어려운 단어를 보고 도망친적이 있었다.
그래서, Git이 뭔지도 모르는 초보자들을 위해서 글을 써보려고 한다.
본론
Git이라는 것이 정확히 무엇인가. 를 이야기 하기 전에, 우리는 Git이 왜 필요한지부터 알아보자.
일반적인 소프트웨어학과, 컴퓨터학과를 나왔다면, 1학년 수준에서는 파이썬과 C언어위주로 공부했을 것이다. 하지만 학년이 올라가면서 2학년 이상부터는 현업에 쓸만한 기초적인 언어를 배우기 시작하는데, 보통 Java, MFC(윈도우 프로그래밍), Kotlin, Javascript등이 있다.
1학년때는 과제를 혼자 풀어서 혼자 내는 경우가 많았지만, 2학년보다 위일때 해당 언어들을 배우게되면 알게 된다.
'아 이건 혼자 할만한 언어가 아니구나'라는 생각이 스쳐 지나가게 된다. 물론 소규모 프로젝트 같은 경우에는 혼자 할 수 있지만, 규모가 큰 프로젝트, 즉 웹 프로그래밍을 사용하여 웹페이지를 만든다던가, 게임을 만들 때, 각자의 역할을 나눠서 수행을 하게 된다.
Git 사용의 첫번째 이유: 효율성과 안전성
그림을 예시로 들어보자. 하나의 안드로이드 어플리케이션을 만든다고 가정하였고, 네 명의 개발자가 한 팀으로 일을 하게 된다. 회색 사람은 UI를 전문적으로 개발할 줄 아는 사람이고, 주황색 사람은 서버를 개발, 노랑색 사람은 데이터베이스를 개발, 파란색 사람은 통신 위주의 기술을 개발하는 개발자라고 가정하자. 이러한 사람들이 Git없이 프로젝트를 진행하려고 한다면 어떻게 해야할까?
우선 한번에 한 사람이 개발을 하는 방식도 존재한다. 이러면 프로그램을 합칠 필요가 없기 때문에, 오류가 나질 않지만, 한번에 한사람밖에 작업을 할 수 없기 때문에, 작업효율은 1/4가 되어버리는 문제가 발생한다.
프로젝트를 효율적으로 진행하려면, 각자 코드를 짜서 들고와서 합치는 것이 효율적이다. 하지만, 같은 파일을 어떻게 나누어서 합쳐야하나? 라는 생각이 들 수 있다. 실제로 위에 네 사람들이 프로그램을 각자 개발해온 뒤, 합치는 작업을 할 때, 작업 파일이 겹치게 된다면, 코드가 꼬이기 때문에 제대로 프로젝트를 진행할 수 없다.
이러한 현상을 해결해주기 위해서 Git, 분산 작업 관리 시스템이다. Git을 사용하게 된다면, 같은 시간에 작업을 각자 하게되어 효율도 좋아지고, 서로 같은 부분을 수정했어도 어느 부분에서 프로그램이 꼬이게 되는지 알 수 있어서, 타협을 할 수 있기 때문에 안정성도 좋아지게 된다.
그러면 프로젝트를 혼자하면 Git을 안써도 되나요? 라는 질문이 들어올 수 있다. 대답을 먼저 해주자면, "아니요"다.
Git 사용의 두 번째 이유: Rollback
학년이 올라갈수록, 과제들은 점점 난이도가 올라가게 된다. 알고리즘을 풀어야 될때가 있기도 하고, 시스템 프로그래밍에서 여러 어려운 코드를 구현하라는 과제가 나올 수도 있다. 본인은 과제를 할 때, 적게는 100줄, 많게는 1000줄짜리 소규모 프로젝트를 진행하여 과제를 수행한 적이 있다.
코드가 몇백줄이 넘다보면, 버그가 터지고 수정을 하였을 때, 자잘한 버그가 나타나는 경우가 있다. 하지만 해당 버그를 수정하고, 진행을 계속 하다보면, 전에는 잘 되던 부분이 갑자기 에러가 뜨는 경우가 발생한다. 이런 버그들이 쌓이다보면 어느새 코드는 500줄이 넘어가있고, 어디가 잘못된지 보이지도 않는데, 프로그램은 실행이 되지 않을 때가 있다.
이러한 상황이 발생하게 되면, 머리를 감싸쥐면서 어떻게 해야하는지 모를 경우가 많다. 보통 프로그램을 아예 새로 짜거나, 아니면 많은 시간을 들여서 코드를 고쳐야 하는데, 이는 시간을 많이 잡아먹는 행위가 된다.
해당 현상이 발생하였을 때, Git을 사용하게 된다면, 전에 성공했던 버젼으로 돌아가게 되어서, 코드를 다시 짤 수 있는 기회가 주어지고, 버그를 찾기가 훨씬 수월하게 된다.
결론
해당 페이지에서는 Git을 왜 써야하는지에 대해 알아보았다.
Git을 쓰는 이유는 대략적으로
- 효율적이고 안정적인 협업 프로젝트를 진행해야 할 경우
- 체크포인트를 만들어서 프로그램이 성공했을 때로 돌아가기 위해서
라고 할 수 있다.
다음 시간에는 Git이 무엇인지, Git에서 제공하는 기능은 무엇인지 설명을 해 보겠다.