"수정본_최종.docx", "수정본_최종_진짜최종.docx", "수정본_최종_이번엔진짜.docx" — 한 번쯤 이렇게 파일 이름을 붙여 본 적 있으실 겁니다. 어제 지운 내용이 다시 필요해서 난감했던 경험도요. 이 모든 골칫거리를 깔끔하게 해결해 주는 것이 바로 버전관리(version control)이고, 그 대표 도구가 Git과 GitHub입니다.
버전관리를 한마디로 표현하면 무한 세이브포인트, 즉 타임머신입니다. 게임에서 어려운 구간에 들어가기 전 세이브를 해 두면, 실패해도 그 지점으로 언제든 돌아올 수 있죠. 버전관리는 내 프로젝트에 원하는 만큼 세이브포인트를 찍어 두고, 언제든 원하는 시점으로 되감을 수 있게 해 줍니다.
Git = 내 컴퓨터의 기록 도구
Git(깃)은 내 컴퓨터 안에서 동작하는 버전관리 도구입니다. 파일을 어떻게 고쳤는지 그 변화를 시점별로 기록해 둡니다. 인터넷이 없어도 됩니다. Git이 하는 일은 '언제, 무엇이, 어떻게 바뀌었는지'를 내 컴퓨터에 차곡차곡 저장하는 것입니다. 비유하자면 순간을 찰칵 찍어 기록하는 사진기입니다.
GitHub = 기록을 올려두고 협업하는 온라인 창고
GitHub(깃허브)는 Git으로 만든 기록을 인터넷에 올려 두는 웹 서비스입니다. 사진기로 찍은 사진을 구글 포토 같은 클라우드에 올려 두는 것과 같습니다. 클라우드에 올려 두면 컴퓨터가 고장 나도 안전하고(백업), 링크를 공유해 다른 사람과 함께 볼 수 있죠(협업). GitHub도 똑같습니다. 내 코드를 백업하고, 팀원과 함께 작업하고, 전 세계에 공개할 수 있게 해 줍니다.
로컬(Git)과 원격(GitHub)의 관계
내 컴퓨터 = 로컬(local)
- 내 프로젝트 폴더가 여기에 있음
- Git이 변경 이력을 기록·저장
- push(올리기)로 원격에 보냄
Git = 사진기(순간을 기록)
인터넷 = 원격(remote)
- GitHub 저장소가 여기에 있음
- 백업·협업·공개를 담당
- pull(내려받기)로 최신을 받음
GitHub = 클라우드 앨범(공유·백업)
Git은 내 컴퓨터에서 기록하고, GitHub는 그 기록을 인터넷에 올려 두고 함께 씁니다.
왜 배워야 하나요? — 세 가지 이유
- 실수 복구: 코드를 엉망으로 만들어도 마지막으로 저장한 정상 시점으로 되돌릴 수 있습니다. '실행 취소(Ctrl+Z)'의 무한 버전입니다.
- 협업: 여러 사람이 같은 프로젝트를 동시에 작업하고, 각자의 변경을 안전하게 합칠 수 있습니다.
- 백업: 내 코드가 GitHub에 안전하게 보관되어, 노트북이 물에 빠져도 코드는 무사합니다.
| 구분 | Git | GitHub |
|---|---|---|
| 정체 | 버전관리 '도구' (프로그램) | Git 저장소를 올려두는 '웹 서비스' |
| 위치 | 내 컴퓨터 (로컬) | 인터넷 (원격) |
| 인터넷 | 없어도 동작 | 필요함 |
| 비유 | 사진기 (순간을 기록) | 클라우드 앨범 (공유·백업) |
GitHub 말고도 GitLab, Bitbucket 같은 비슷한 서비스가 있습니다. 모두 'Git 기록을 올려두는 창고'라는 점은 같습니다. 가장 널리 쓰이고 자료가 많은 GitHub로 시작하면, 다른 서비스도 자연스럽게 쓸 수 있게 됩니다.
Git과 GitHub를 같은 것으로 착각하기 쉽지만 별개입니다. Git 없이 GitHub만 쓸 수도, GitHub 없이 Git만 쓸 수도 있습니다. '내 컴퓨터의 도구(Git)'와 '인터넷 창고(GitHub)'라는 구분만 확실히 기억하면 앞으로가 훨씬 쉬워집니다.
정리하면, Git으로 내 컴퓨터에 세이브포인트를 찍고, GitHub에 그 세이브 파일을 올려 백업하고 공유합니다. 다음 레슨에서는 이 둘을 실제로 쓰기 위한 설치와 계정 준비를 함께 해 보겠습니다.