[Github] 깃허브 왕초보 사용법 - 기본편1

IT/왕초보 강의|2021. 12. 19. 01:21

회고록


"나도 사실 깃허브를 쓸 줄 몰랐다"

2학년 초반 팀플 조장선배가 이게 협업 툴이라며 알려줬어도 이게 뭐고...? 싶을 뿐이었다. 아무리 설명을 들어도 그냥 말 귀에 경 읽기 수준이 아니던가... 이런 고급 도구 쓰기도 힘들고 그냥 싫었다.

그러던 중 내가 컴퓨터에서 뭘 잘못 지워서 코드가 백업본 없이 싹~다 날아가버리는 경험을 하게 되었다. ㅋㅋㅋㅋ

그 이후로 코드 백업과 함께 깃허브의 필요성을 절실히 느끼게 되었다... 또 42서울이라는 대외활동을 하며 터미널과 깃을 이용하여 과제를 제출하다보니, 어느새 꽤 익숙해지게 되었다.

 

진짜 이상한게 학교에서 가르쳐주지도 않는 주제에 깃은 개발자에게 반드시 필요한 도구라고 한다. 학교에서 이런 걸 좀 가르쳐야하는 데 독학으로 배우긴 또 어렵고 귀찮다. 그렇지만 난 깃을 배우는게 정말! 꼭 필요하다고 생각한다. 이번 강좌를 통해 꼭 고급정보 잘 배워가길 바란다.

 

이 글을 읽는 여러분들은 아마 어렵더라도 깃허브를 배워야겠다는 생각에 찾아온 것일테다.

"fork? clone? push? commit? 잔디밭 깔기? 이게 다 대체 뭐고...."

"애초에 깃이 뭔데..? 진심 때려치고싶다."

등등 이런 생각이 들며 혼란스러웠을 것 누구보다 잘 안다. 그래서 왕초보의 눈높이에 맞는 쉬운 사용법 강좌를 쓴다. 여러분에게 많은 도움이 되길 바란다. 

 

이번 기본편에서는 주로 이런 내용을 다룬다.

1. 깃이 무엇인가

2. 깃에서의 기본적인 기능들

3. 깃허브에 코드를 올리는 법 (feat. vscode)

4. 깃허브에서 다른 사람들의 코드 보기 (검색하기)

5. 내 깃허브 페이지 꾸미기 

 

 

애초에 깃이 뭔가요


깃은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다. 또는 이러한 명령어를 가리킨다 <출처 : 위키백과>

...라고 한다.

 

사실 이 말만 들어서는 잘 이해가 안된다. 그러면 이걸 한번 보자.

우리는 이렇게 하나의 작업물에 대해 버전을 여러 개 만든다.... 계속 수정해야할 일이 생기고, 그러면 새롭게 복사본을 만들어 거기서 또 내용을 수정한다. 제목에 '_수정1', '_수정2', '_최종' 등등을 붙여가며 말이다.

정말 비효율적이지 않은가? 그렇다고 한 작업물로 합쳐버리기에는, 유사 시 그전 버전으로 복구하기 힘들어 곤란한 걍우가 생긴다.

 

그럼 누군가는 이런 생각을 할 것이다.

"한 작업물에서 이전 버전을 바로 복구할 수 있게, 이전 버전에서 무엇이 수정되었는 지 알 수 있도록 버전관리를 하면 어떨까?"

축하한다. 당신은 방금 깃이라는 기술을 발명했다.

이렇게 "버전 관리"를 손쉽게 도와주는 기술이 바로 "깃(git)"이다.

 

또한 깃허브는 이 "깃(git)"이라는 기술을 사용하는 코드 저장소이다.

 

그러면 내 깃허브를 통해서, 어떤 식으로 깃 버전관리가 되는 지 맛만 보여주겠다.

다음은 내 깃허브 레포지터리 하나로 들어가 내가 뭘 수정해서 올릴 때 작성한 커밋메시지를 클릭해본 결과이다. (6_utilize_queue 부분)

내 코드가 지난번과 비교해서 어떤 부분이 달라졌는지까지 비교되어서 나온다. 이건 정말 굉장한 거다.

이를 활용하면 코드를 쉽게 이전 버전으로 복구할 수 있다고 한다. 더 많은 기능들이 있지만 일단 생략하고 넘어간다.

 

 

 

깃에서의 기본적인 기능들


깃에서 알아야할 기본적인 용어만 맛만 본다. 대강 이해만 하고 넘어가자.

 

* 저장소 (Repository)

프로젝트가 살고 있는 저장공간. 주로 repo라고 줄여서 부르기도 하며, 디렉토리(폴더)라고 부르기도 한다. 이 안에 코드, 텍스트, 이미지 등등을 저장할 수 있다.

 

 

* 커밋 (Commit)

커밋을 한다 = 그 시점의 자신의 레포 스냅샷을 찍어 체크포인트 깃발을 꽂아둔다.

보통 체크포인트가 그렇듯이 수정을 하다가도 원하는 체크포인트로 돌아가 복원할 수 있다. 

 

 

* 브랜치 (Branch)

이건 주로 여러 명이 한 레포에 프로젝트를 만들어 협업할 때 중요하게 쓰이는 기능이다.

 

예를 들어, 3명이 팀프로젝트를 한다고 해당 프로젝트를 담을 레포(저장소) 하나를 만들었다고 해보자. 팀원 a, b, c는 각자 컴퓨터로 레포에 접근해 작업한다. 이때 a, b, c 3명이 동시에 같은 코드를 수정하거나 삭제해버렸다 해보자. 충돌이 생기고, 또 어디를 고쳤는지 어디를 복원해야하는지 알기 힘들어 정말 개판이 난다. 어쩌면 더이상 팀프로젝트가 아닌 머리채싸움이 될 수도 있다. 

 

이걸 방지하기 위한 기능이 branch이다. 자신이 진행하는 프로젝트의 브렌치를 따서(Branch off) 자기버전을 만드는 거다. 작업이 끝나면 프로젝트 메인 디렉토리인 master에 브랜치를 'merge'하여 병합할 수 있다.

아래 이미지와 같이, 한 시점에서 복사본을 만들어 작업하다가 작업이 끝나면 원본에 합친다는 것으로 보면 된다.

(혼자 작업하는 경우엔 당장 쓰이는 기능은 아니다) 

 

 

댓글()