목차
우리가 깃을 쓰는 이유. 깃의 장점은 무얼까?
깃은 VCS(Version Control System) 중 하나로, 프로젝트의 시간과 차원을 관리한다.
타임머신을 타고 원하는 순간으로 돌아가고 싶은 것 처럼, 깃과 함께라면 우리가 만들고 있는 파일을 원하는 순간으로 돌아갈 수 있다.
작업을 하다보면 (꼭 프로그래밍 작업이 아닐지라도) 계속 수정에 수정을 거친다. 작업 중간 중간 파일을 계속 저장한다.
진짜 최종본이라고 믿고 저장했지만, 고쳐야 할 부분이 또 생기는 경우가 허다하다.
가장 마지막 버전이 꼭 제일이라는 보장도 없어서, 예전 버전으로 돌아가기도 한다.
만약 내가 중간 과정의 파일들을 별도로 저장하지 않고, 덮어쓰기를 하며 작업해 왔는데, 3시간 전의 파일이 필요하다면....? 참 슬픈 상황이 아닐 수가 없다.
하지만, 수정 시점 마다의 파일이 모두 저장되어있으면, 이것은 문제되지 않는다. 예전 작업과정으로 타입 슬립을 하면 되니까.
하지만 대규모 프로그래밍 프로젝트에서 이 방법은 권장되지 않는다. 모든 버전의 파일을 다 저장해놓는 방식은 용량을 너무나 많이 잡아 먹을 것이다.
깃은 소스 코드를 드라이브에 다 저장하지 않으면서도 각 버전의 코드들을 효율적으로 관리해줄 수 있다.
약 30분전 코드로 돌아가야 한다고 가정해보자.
현재 코드의 모든 것을 포기하고 지우는 상황이 아니다. 현재 버전을 웬만큼 유지하면서, 아주 일부만 예전 버전의 것을 필요로 하는 상황이다.
만약 깃이 없다면 우리는 예전 코드를 열어 왼편에 띄우고 지금 코드를 오른편에 띄운 후에 line by line으로 살펴보아야 할 것이다. 변수명나 클래스명이 다를 수 있는 경우를 대비하여 예전 코드를 그대로 복사 붙여넣기 해올 수도 없다.
하지만, 깃이라면 이러한 이슈들을 모두 손쉽게 해결 가능하다. 깃은 소스코드 수정 이력을 line by line 다 기억하고 있으니까.
아래 그림 처럼 깃은 각 시점에서의 다양한 수정 이력을 세세하게 저장한다. 각 코드의 수정 사항들을 가지치기(branch)하고 합칠 수 있다 (merge).
때문에 깃은 여러 사람이 한 프로젝트에서 많은 수정 사항을 번복하고 기억해야하는 작업에서 매우 유용하다.
많은 개발자들이 자신의 프로젝트를 깃허브(git hub, git과는 다름)에서 관리하고 있고. 회사에서 깃과 깃허브를 통해 협업하는 경우가 대부분이다.
그래서 개발자가 되려면 프로그래밍 스킬 자체 뿐만아니라 git(깃)을 배워야하는 것은 필수 소양이다.
마치 사무직이 워드 프로세서를 잘 다루어야 하는 것처럼 말이다.
★ 학습에 도움을 받은 강의들 (가나다순) ★
생활코딩 : https://www.inflearn.com/course/git-2#curriculum
드림코딩앨리 : https://www.youtube.com/watch?v=Z9dvM7qgN9s
알코 : https://www.yalco.kr/55_git_github/