개발자의 노하우

[실전개발] Git, Github(깃, 깃허브)의 기초

륨륨이 2022. 7. 17. 14:25
반응형

프로그램 개발의 결과물은 소스코드입니다.

개발을 현업에서 하려면 가장 먼저 익혀야 하는게 이 핵심 결과물인 소스코드의 관리 방법이라고 생각합니다.

Git, Github 은 현재 소스코드 관리용 툴로 글로벌하게 가장 많이 사용되고 있는데요.

이번 글에서는 개발에 입문하시는 분들이 쉽게 깃을 쓸수 있게 깃에서 사용되는 기초 개념에 대해서 정리해 보도록 하겠습니다.

Git, Github 란?

Git 은 소스코드 버전 관리를 도와주는 로컬(= 개인 컴퓨터에 깔린) 프로그램이고, Github 은 Git 으로 관리되는 소스코드를 리모트에서(= 원격 서버에 등록해서 모두가 볼수 있게) 관리하게 해주는 서비스입니다.

 

현업을 하다 보면 다음과 같은 일들이 빈번히 발생합니다.

 

"분명히 아까는 돌아가긴 하던 코드였는데 이것저것 추가하니까 안되어서...아까 버전으로라도 돌리고 싶은데 어떻게 되어 있었는지 기억이 안나요ㅠㅠ"

  • 기존 버전과 내가 변경한 버전의 diff 를 확인해야 합니다. Git 을 사용하면 이미 '저장'된 버전과, 아직 '저장'하지 않은 변경사항을 쉽게 비교해서 볼수 있어서 이전 버전으로 손쉽게 돌아가거나, 문제를 빨리 발견할 수 있습니다.

"이미 배포한 특정 버전에서만 오류가 난다는데 그 버전의 코드로 돌아가서 원인 확인이 필요한데 어떻게 하죠?"

  • 그 특정 버전으로 소스코드를 변경시킬 방법이 필요합니다. Git Tag 를 사용해서 특정 버전의 스냅샷을 정확히 기록해 두면 이미 배포된 버전이 어떤 코드인지 바로 열어볼 수 있습니다.

이런 식으로 소스코드 개발의 모든 단계에서 필요한 상황에 대한 적당한 관리 체계를 갖추어 둔 것이 깃과 깃허브라고 볼 수 있습니다.

핵심 용어 설명

Git, Github 가 글로벌 서비스이다 보니 모든 용어가 영어로 되어 있습니다. 현업에서도 거의 영어 단어 그대로 사용하기 때문에 따로 번역하지 않고 단어 그래도 설명하겠습니다.

local (로컬)

소스코드를 관리하는 자신의 로컬 컴퓨터 저장 공간을 뜻합니다.

remote (리모트)

깃허브 서버에 올라가 있는 원격 저장 공간을 뜻합니다.

commit (커밋)

현재 소스코드의 상태를 그대로 하나의 스냅샷으로 만드는 것을 뜻합니다. 쉽게 말해 지금 상태 그대로를 저장하는 것입니다. 커밋한다 또는 커밋을 만든다 등으로 아예 고유 명사처럼 쓰입니다. 로컬 저장소, 원격 저장소 모두에서 만들 수 있습니다.

git commit 예시

커밋에는 '누가', '언제', '무엇을' 바꿨는지가 자동으로 기록되고, 위 이미지처럼 작성자가 작성한 순서대로 커밋이 하나씩 쌓이게 됩니다.

뒤 커밋은 앞 커밋의 상태를 기준으로 해서 새롭게 달라진 점이 기록됩니다.

push (푸시)

커밋을 로컬 저장소에서 만들어서 원격 저장소로 반영하는, '밀어내는' 과정을 뜻합니다.

pull (풀)

커밋을 원격 저장소에서 만들어서 로컬 저장소로 반영하는, '당겨오는' 과정을 뜻합니다.

branch (브랜치)

브랜치는 독립적으로 작업을 진행하기 위해 커밋이 올라가는 공간을 분리하는 개념입니다.

git branch 예시

이건 하나의 파란색 커밋을 뿌리로 해서, 빨간색, 노란색, 초록색, 보라색 브랜치가 각각 생성된 상태입니다.(실제로는 색깔로 구별하지 않고 각각 브랜치를 생성할때 부여된 이름으로 구별합니다)

각 브랜치에서 커밋한 내역은 서로 독립적이라서 다른 브랜치에 영향을 미치지 않고 별도의 이력으로 생성됩니다. 생긴 모양이 나무의 가지처럼 별도로 뻗어나가는 모양이기 때문에 이름이 이렇게 지어진 것 같습니다.

일반적으로 협업이 필요한 프로젝트에서는 기준이 되는 브랜치를 두고(main, master, develop 등등..) 각자 개인 브랜치를 따서 작업을 하고 그 기준 브랜치로 합치게 됩니다.

merge (머지)

위에서 설명한 대로 각자 브랜치에서 작업한 내용을 'merge' 작업을 통해 기준 브랜치에 반영을 하게 됩니다.

이것이 개발자 협업의 핵심인데요. 각자의 브랜치에서 작업한 내용을 커밋을 하고 일정 절차를 거쳐 동료로부터 코드 리뷰를 받으면 머지해서 모두가 쓸수 있도록 기준 브랜치에 자신의 작업 내용을 반영합니다.

git merge 예시

제일 왼쪽 파란색 브랜치가 기준 브랜치인데, 각각 노란색, 빨간색, 초록색 브랜치에서 따로 작업되었던 내용이 머지되어서 파란색 브랜치에도 커밋이 올라간 것을 확인하실 수 있을겁니다.

 

다음 글에서는 실제로 각 상황에 따라 깃 명령어를 어떻게 써서 소스코드를 관리할 수 있는지에 대해서 다루겠습니다.

읽어주셔서 감사합니다!

반응형