Git(깃)은 코딩 버전관리 프로그램입니다. 이 프로그램은 MEAN Stack이나 JavaScript에만 사용되는 것이 아니라 어떠한 코딩 프로젝트에서도 유용하게 사용할 수 있습니다.
버전관리란 게임에서 '저장하기'기능으로 생각하면 이해하기 쉽습니다. '저장하기' 기능이 있는 게임은 언제든지 게임을 저장한 시점으로 돌아갈 수 있죠. 프로그램 제작을 위해 코딩을 하는 것을 게임을 플레이 하는 것으로 치면, 현재 코드를 저장하는 것을 '버전 생성'이라고 할 수 있으며, 언제든지 해당 버전을 불러 올 수 있는 것이죠.
이게 왜 필요한가 하면, 코딩을 하다가 잘되던 프로그램이 갑자기 잘 작동하지 않는 경우가 종종있고, 그 중 가끔은 어디서부터 잘못됐는지를 모르는 경우가 있습니다. 이 때 잘되던 때의 코드를 저장해 놓으면 쉽게 되돌아 갈 수 있죠. 혹은 여러가지 다른 이유로도 이전의 코드로 돌아가야 하는 일은 흔히 있습니다. 이럴 때를 대비해서 해당 프로젝트를 '백업'하는데, 그냥 프로젝트 폴더 전체를 따로 복사해 놓는 것이지요.
프로젝트를 복사해 두는 것으로 위 문제는 해결되지만, 프로젝트의 파일크기가 크다면 복사하는데 시간도 오래걸리고 컴퓨터의 용량도 많이 먹고, 나중에는 이게 무슨 복사본이였는지 까먹기도 합니다.
Git은 이러한 단점없이 위 문제를 해결할 수 있습니다.
Git은 현재 코드 저장(git에서는 commit(커밋)이라고 합니다)시 바로 이전에 저장했던 파일들과 현재 저장하는 파일들의 차이점만을 기록하여 이전 commit으로 돌아가는 경우 그 달라진 부분만을 복원합니다. 수백번 저장해도 실제 전체 코드를 다 저장하는 것이 아니기 때문에 용량이 크게 늘어나지도 않고 속도도 빠릅니다.
또한 한명 이상이 한 프로그램을 만들거나 여러가지 기능을 동시에 추가하는 경우 각각의 기능 별로 branch(브랜치, 나무의 가지)를 만들 수 있습니다. 이 branch의 코드는 다른 branch의 코드에 영향을 주지 않기 때문에 다른 branch의 코드를 망가트리거나, 다른 branch의 코드때문에 현재 branch의 코드가 망가질 염려 없이 코딩할 수 있습니다. 해당 branch의 코드가 완성되면 원래 코드로 합칠 수 있습니다.
첫째줄의 master branch는 메인이 되는 branch 입니다. 프로젝트 폴더에 git 세팅을 하면 기본적으로 주어집니다. 다른 두 개의 nice_feature, very_nice_feature는 추가된 branch로 master를 제외한 branch 이름은 사용자가 지정합니다.
nice_feature는 개발이 완료되서 master branch에 합쳐진것을 볼 수 있습니다.
very_nice_feature는 개발중으로 아직 master에 합쳐지지 않았습니다.
위의 빨간 점들은 사용자가 그때그때 저장을 한 부분으로 프로젝트를 언제든지 저 점들의 상태로 되돌릴 수 있습니다. branch를 사용하는 이유는 나중에 완성된 프로그램에서 해당 branch부분만 때어낼 수도 있고, master를 과거 상태로 되돌리는 것 보다 branch에서 개발을 하다가 branch를 제거하는 것이 더 수훨하기 때문입니다.(아니면 그 branch는 지우지도 않고 그냥 무시해버려도 되구요)
Github(깃헙)은 git 데이터를 온라인에 저장해 주는 사이트(https://github.com)입니다.
백업이 기본 기능이지만 단순히 저장만 하는 것이 아니라 다른 유저들과 함께 코드를 공유하고 온라인으로 하나의 프로그램을 같이 제작하는 것도 가능합니다.
많은 오픈소스 프로그램들이 github을 통해서 전세계 유저들에 의해 제작되고 있습니다.
이 블로그의 모든 코드들도 github에 저장됩니다. https://github.com/a-mean-blogger
댓글
이 글에 댓글을 다시려면 SNS 계정으로 로그인하세요. 자세히 알아보기