Git과 GitHub

Git


Git(깃)은 코딩 버전관리 프로그램입니다. 이 프로그램은 MEAN Stack이나 JavaScript에만 사용되는 것이 아니라 어떠한 코딩 프로젝트에서도 유용하게 사용할 수 있습니다.

버전관리란 게임에서 '저장하기'기능으로 생각하면 이해하기 쉽습니다. '저장하기' 기능이 있는 게임은 언제든지 게임을 저장한 시점으로 돌아갈 수 있죠. 프로그램 제작을 위해 코딩을 하는 것을 게임을 플레이 하는 것으로 치면, 현재 코드를 저장하는 것을 '버전 생성'이라고 할 수 있으며, 언제든지 해당 버전을 불러 올 수 있는 것이죠.

이게 왜 필요한가 하면, 코딩을 하다가 잘되던 프로그램이 갑자기 잘 작동하지 않는 경우가 종종있고, 그 중 가끔은 어디서부터 잘못됐는지를 모르는 경우가 있습니다. 이 때 잘되던 때의 코드를 저장해 놓으면 쉽게 되돌아 갈 수 있죠. 혹은 여러가지 다른 이유로도 이전의 코드로 돌아가야 하는 일은 흔히 있습니다. 이럴 때를 대비해서 해당 프로젝트를 '백업'하는데, 그냥 프로젝트 폴더 전체를 따로 복사해 놓는 것이지요.

프로젝트를 복사해 두는 것으로 위 문제는 해결되지만, 프로젝트의 파일크기가 크다면 복사하는데 시간도 오래걸리고 컴퓨터의 용량도 많이 먹고, 나중에는 이게 무슨 복사본이였는지 까먹기도 합니다.

Git은 이러한 단점없이 위 문제를 해결할 수 있습니다.

Git은 현재 코드 저장(git에서는 commit(커밋)이라고 합니다)시 바로 이전에 저장했던 파일들과 현재 저장하는 파일들의 차이점만을 기록하여 이전 commit으로 돌아가는 경우 그 달라진 부분만을 복원합니다. 수백번 저장해도 실제 전체 코드를 다 저장하는 것이 아니기 때문에 용량이 크게 늘어나지도 않고 속도도 빠릅니다.

또한 한명 이상이 한 프로그램을 만들거나 여러가지 기능을 동시에 추가하는 경우 각각의 기능 별로 branch(브랜치, 나무의 가지)를 만들 수 있습니다. 이 branch의 코드는 다른 branch의 코드에 영향을 주지 않기 때문에 다른 branch의 코드를 망가트리거나, 다른 branch의 코드때문에 현재 branch의 코드가 망가질 염려 없이 코딩할 수 있습니다. 해당 branch의 코드가 완성되면 원래 코드로 합칠 수 있습니다.

Git을 이용한 프로젝트 workflow


첫째줄의 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


Github(깃헙)은 git 데이터를 온라인에 저장해 주는 사이트(https://github.com)입니다.

백업이 기본 기능이지만 단순히 저장만 하는 것이 아니라 다른 유저들과 함께 코드를 공유하고 온라인으로 하나의 프로그램을 같이 제작하는 것도 가능합니다.

많은 오픈소스 프로그램들이 github을 통해서 전세계 유저들에 의해 제작되고 있습니다.

이 블로그의 모든 코드들도 github에 저장됩니다. https://github.com/a-mean-blogger

댓글

J
Jongyo Park 2017.11.08
감사히 읽었습니다.
I
Ian H 2017.11.08
@Jongyo Park,
도움이 되었으면 좋겠습니다!
문지상 2018.04.30
깃과 깃헙이 똑같은 의미인줄 알았는데, 엄밀히 따지면 다른의미였네요. 감사합니다 잘 배워갑니다!
김강한 2018.09.04
감사히 읽었습니다.
I
Ian H 2018.09.04
@김강한,
감사합니다!
노트북 2019.01.05
프로그램 개발이 다 끝나고, git을 쓰나요 아니면, 개발 중에도 계속 git을 쓰나요?
I
Ian H 2019.01.07
@노트북,
개발 시작부터 끝까지 사용합니다.  가끔씩 오류를 고치려고 코드를 수정하였는데, 더 고장나 버리는 경우가 있잖아요? 이럴 때 다시 불러오는 용도로 사용됩니다.
여러명이서 개발을 하는 경우에는 개별 인원이 각각 자신이 맡은 부분의 코드를 작성하고, 팀장이 검토하여 하나로 모으는 용도, 나중에 문제가 발생할 경우 누구의 코드에서 문제가 발생하는지 확인하는 등의 용도로 사용됩니다.
댓글쓰기

이 글에 댓글을 다시려면 SNS 계정으로 로그인하세요. 자세히 알아보기

UP