개발판에 첫발을 들인 당신. 코딩은 어찌어찌 하는데, ‘깃허브’라는 단어만 나오면 갑자기 어깨가 움츠러드는가? 걱정 마. 당신만 그런 게 아니다. 이 지긋지긋한 버전 관리 시스템은 마치 위스키 바의 첫 입문처럼—처음엔 텁텁하고 어렵게만 느껴지지만, 그 규칙만 알면 인생에서 가장 강력한 무기가 되어준다. 오늘은 그 어두운 밤의 문을 활짝 열어젖힐, 뉴비를 위한 Github 사용법이다.
이 글을 다 읽고 나면, 당신은 더 이상 터미널 앞에서 벌벌 떠는 초보가 아니다. ‘잘 모르니까’ 남의 코드만 베끼던 시절은 끝났다. 지금부터 우리는 같은 무대 위에서, 가장 쿨한 방식으로 협업의 세계에 입문한다.
목차
Toggle1. Git과 Github: 그냥 같은 거 아냐?
대부분의 뉴비가 가장 먼저 하는 질문이다. “깃(Git)이랑 깃허브(Github)는 뭐가 달라요?” 이 질문에 “그냥 같은 거예요”라고 답하는 사람이 있다면, 그 사람 옆에서 맥주를 마시지 마라. 둘은 전혀 다른 존재다.
Git은 2005년, 리눅스의 아버지 리누스 토르발즈가 단 2주 만에 뚝딱 만들어낸 분산 버전 관리 시스템이다. 이 핀란드 출신의 천재는 자기가 쓰던 도구(BitKeeper)가 갑자기 유료로 돌아서자, 화가 나서 직접 만들어버렸다. 마치 “네가 안 해? 내가 할게”라고 말하며 2주 만에 지옥에서 온 도구를 꺼내든 셈이다. Git은 우리 컴퓨터(로컬) 안에서 코드의 모든 순간을 기록한다. 마치 타임머신처럼, 과거의 순간으로 자유자재로 이동할 수 있게 해주는 강력한 엔진이다.
Github는 이 Git 엔진을 얹어서 운행하는 클라우드 기반의 원격 저장소다. 쉽게 말해, 내 컴퓨터에만 있는 소중한 코드들을 인터넷상의 서버에 백업해두고, 전 세계 개발자들과 공유하고 협업할 수 있게 만든 공간이다.
비유하자면, Git은 ‘시간을 조종하는 장치’ 이고, Github는 그 장치로 만든 멋진 작품을 전 세계에 전시하는 ‘갤러리’ 인 셈이다.
2. 헷갈리는 용어들, 싹 정리해드립니다
개발자들은 은어를 좋아한다. 마치 패션 피플들이 ‘플리츠’니 ‘실루엣’이니 하며 수다 떨 듯, 깃허브에도 알아들을 수 없는 단어가 넘쳐난다. 이 기본기를 무시하면 나중에 Pull Request 하나 제대로 못 올리고 한 시간 동안 헤맬 수 있다. 지금 바로 정리하자.
| 용어 | 영문 | 핵심 정리 (뉴비의 언어) |
|---|---|---|
| 저장소 | Repository | 프로젝트 파일이 보관되는 창고다. 보통 하나의 프로젝트 단위로 생성한다. |
| 로컬 / 원격 | Local / Remote | 내 컴퓨터와 깃허브 서버의 차이. 내 컴퓨터에서 작업하고, 결과물을 서버로 밀어 넣는 구조다. |
| 커밋 | Commit | 코드의 변경 이력을 하나의 스냅샷으로 저장하는 행위. “이때까지 한 작업을 ‘회원가입 기능 추가’라는 이름으로 저장한다!”고 생각하면 된다. |
| 푸시 / 풀 | Push / Pull | 밀어 넣기(Push) : 내 컴퓨터의 커밋을 깃허브 서버에 업로드. 당겨 오기(Pull) : 반대로 서버의 최신 코드를 내 컴퓨터로 가져옴. |
| 브랜치 | Branch | 분기점, 혹은 평행 우주. 메인 코드에는 영향을 주지 않고, 나만의 공간에서 자유롭게 실험할 수 있는 공간이다. |
3. 가장 간결한 워크플로우: 이 순서만 기억해라
깃허브의 전체 프로세스는 생각보다 단순하다. 마치 요리 레시피처럼, 이 순서만 외우면 절대 망하지 않는다. 나는 이걸 ‘ADD-COMMIT-PUSH 삼부작’ 이라고 부른다.
- ADD (스테이징) : 요리 재료를 손질해 대기실(Staging Area) 에 올린다.
git add .(모든 변경사항) 또는git add [파일명]으로 사용한다. - COMMIT (확정) : 대기실에 있는 재료들을 하나의 요리 세트로 묶어 이름을 붙인다.
git commit -m "로그인 기능 완료". - PUSH (업로드) : 완성된 요리 세트를 진열장(Github)에 전시한다.
git push origin main.
이게 끝이다. 물론 중간에 git status로 현재 상태를 수시로 확인하는 습관은 필수다.
4. 첫 번째 저장소, 너랑 나랑 연결하기
자, 이제 실제로 움직여보자. 이론은 충분하다. 손을 움직여라.
1) 로컬에서 시작하기
우리가 작업할 폴더를 하나 만들자. 터미널(맥)이나 Git Bash(윈도우)를 열어 다음 명령어를 친다.
mkdir my-first-project
cd my-first-project
git init
git init은 이 폴더를 Git이 관리하겠다고 선언하는 순간이다. 마치 “여기는 내 작업실이다”라고 벽에 낙서하는 것과 같다.
2) 깃허브에 원격 저장소 생성하기
- Github.com에 로그인한다.
- 오른쪽 상단의 [+] 버튼을 누르고 New repository를 클릭한다.
- 저장소 이름을 위에서 만든 폴더명과 동일하게
my-first-project로 지정한다. (설명은 선택사항) - Public과 Private 중 선택한다. (일단 공부용이니 Public도 무방)
- Create repository 버튼 클릭.
3) 로컬과 원격을 연결하는 마법
생성된 저장소 페이지에 보면 …or push an existing repository from the command line이라는 섹션이 보일 것이다. 그 아래 있는 명령어를 그대로 복사해 우리의 터미널에 붙여 넣는다.
git remote add origin https://github.com/아이디/my-first-project.git
git branch -M main
git push -u origin main
git remote add origin은 “지금부터 내 컴퓨터의 이 폴더는 origin이라는 별명으로 깃허브 서버와 연결된다”는 선언이다. 이제 당신의 코드는 전 세계 어디서든 접근 가능한 클라우드로 날아갔다.
5. 브랜치(Branch): 평행 우주에서 놀아보자
처음에는 main 브랜치 하나만으로도 충분하다. 하지만 진정한 협업은 브랜치에서 시작된다. 당신이 앱을 만드는데, 갑자기 새로운 다크 모드 기능을 실험해보고 싶다고 가정해보자. 메인 앱이 망가질까봐 두렵다면, 브랜치를 생성하면 된다.
# 새 브랜치 생성 및 이동
git checkout -b feature/dark-mode
# 여기서 마음껏 코드 수정 후 커밋
git add .
git commit -m "다크모드 실험 중"
# 작업이 완료되면 다시 메인 브랜치로 이동
git checkout main
# 실험한 내용을 메인에 병합
git merge feature/dark-mode
브랜치 전략은 초보자에겐 다소 복잡해 보일 수 있다. 하지만 이것만 기억하자: 당신이 지금 작업하는 내용이 메인에 영향을 주지 않는다는 사실, 그 자체가 브랜치가 주는 가장 큰 선물이다.
에필로그: 버튼이 아니라 원리를 이해하라
오늘 배운 내용은 단순히 명령어를 외우는 것이 아니다. add, commit, push, branch라는 네 가지 축이 어떻게 맞물려 돌아가는지, 그 흐름을 이해하는 것이 핵심이다. 구글 검색만으로는 알려주지 않는, 이 근육 기억 같은 흐름을 체화하는 순간, 당신은 더 이상 깃허브 앞에서 주눅 들지 않게 될 것이다.
이제 당신의 코드를 깃허브에 올려라. 두려워 말고. 버튼을 누르는 게 아니라, 명령어로 직접 컨트롤하는 맛에 점점 빠져들게 될 테니. 혹시 실수했다면? 리누스가 만든 그 타임머신, Git이 아름답게 되돌려줄 테니까.





