들어가며: Git과 GitHub의 차이

지난 글에서 Git의 기초를 배웠다면, 이번에는 한 단계 더 나아가 GitHub를 활용한 협업에 대해 알아보겠습니다. 먼저 많은 분들이 헷갈려하는 Git과 GitHub의 차이부터 짚고 넘어가죠.

Git은 버전 관리 시스템입니다. 여러분의 컴퓨터에서 로컬로 동작하며, 파일의 변경 이력을 추적하고 관리합니다. 인터넷 연결 없이도 완벽하게 작동합니다.

GitHub는 Git 저장소를 호스팅해주는 웹 서비스입니다. 쉽게 말해 여러분의 Git 저장소를 인터넷에 올려두고, 다른 사람들과 공유하고 협업할 수 있게 해주는 플랫폼입니다. GitHub 외에도 GitLab, Bitbucket 같은 비슷한 서비스들이 있지만, GitHub가 가장 널리 사용됩니다.

비유하자면, Git은 일기장이고 GitHub는 일기장을 보관하고 친구들과 공유할 수 있는 클라우드 서비스라고 생각하면 됩니다.

GitHub는 단순히 코드를 저장하는 곳을 넘어서, 전 세계 개발자들이 협업하는 가장 큰 커뮤니티가 되었습니다. 오픈소스 프로젝트의 대부분이 GitHub에서 관리되고, 많은 회사들이 채용 시 지원자의 GitHub 프로필을 참고하기도 합니다. 그만큼 현대 개발자에게 GitHub는 필수적인 도구이자 포트폴리오입니다.

1. GitHub 계정 생성 및 초기 설정

1.1 계정 만들기

GitHub 계정을 만드는 과정은 간단합니다.

  1. github.com에 접속합니다.
  2. "Sign up" 버튼을 클릭합니다.
  3. 이메일 주소, 비밀번호, 사용자명을 입력합니다.
  4. 이메일 인증을 완료합니다.

사용자명(Username) 선택 팁:

  • 영어 소문자와 숫자, 하이픈(-)만 사용 가능합니다.
  • 전문적으로 보이는 이름을 선택하세요. 이 이름이 여러분의 GitHub URL이 됩니다 (github.com/사용자명).
  • 너무 복잡하거나 긴 이름은 피하세요. 나중에 다른 사람들이 언급하기 어렵습니다.
  • 가능하다면 다른 플랫폼에서 사용하는 이름과 동일하게 유지하면 브랜딩에 도움이 됩니다.

1.2 프로필 설정하기

계정을 만들었다면 프로필을 설정해봅시다. 오른쪽 상단의 프로필 아이콘을 클릭하고 "Settings"로 이동합니다.

  • Profile picture: 본인을 나타내는 사진이나 아이콘을 설정하세요.
  • Bio: 간단한 자기소개를 작성합니다.
  • Location: 위치 정보를 입력할 수 있습니다.
  • Website: 개인 블로그나 포트폴리오 링크를 추가하세요.

2. SSH 키 설정하기

GitHub에 코드를 올리려면 인증이 필요합니다. 매번 비밀번호를 입력하는 것은 번거롭고 보안상으로도 좋지 않습니다. SSH 키를 설정하면 안전하게 자동으로 인증할 수 있습니다.

2.1 SSH 키란?

SSH(Secure Shell) 키는 공개키 암호화 방식을 사용하는 인증 방법입니다. 두 개의 키가 쌍으로 생성됩니다.

  • 개인키(Private Key): 여러분의 컴퓨터에만 저장하는 비밀 키입니다. 절대 다른 사람과 공유하면 안 됩니다.
  • 공개키(Public Key): GitHub에 등록하는 키입니다. 다른 사람에게 공개해도 안전합니다.

2.2 SSH 키 생성하기

터미널을 열고 다음 명령어를 실행합니다.

# SSH 키 생성 (이메일은 GitHub 계정 이메일로 변경)
ssh-keygen -t ed25519 -C "your_email@example.com"

명령어를 실행하면 몇 가지 질문이 나옵니다.

# 키 저장 위치 (기본값 사용 권장, Enter 누르기)
Enter file in which to save the key (/Users/you/.ssh/id_ed25519):

# 패스프레이즈 설정 (선택사항, 추가 보안을 위해 설정 권장)
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

2.3 SSH 에이전트에 키 등록하기

생성된 SSH 키를 SSH 에이전트에 등록합니다.

# SSH 에이전트 시작
eval "$(ssh-agent -s)"

# 개인키 등록
ssh-add ~/.ssh/id_ed25519

2.4 GitHub에 공개키 등록하기

먼저 공개키의 내용을 복사합니다.

# macOS
pbcopy < ~/.ssh/id_ed25519.pub

# Windows (Git Bash)
clip < ~/.ssh/id_ed25519.pub

# Linux
cat ~/.ssh/id_ed25519.pub
# 출력된 내용을 직접 복사

그 다음 GitHub에서:

  1. Settings > SSH and GPG keys로 이동합니다.
  2. "New SSH key" 버튼을 클릭합니다.
  3. Title에 이 키를 식별할 수 있는 이름을 입력합니다 (예: "MacBook Pro", "Office Desktop").
  4. Key 필드에 복사한 공개키를 붙여넣습니다.
  5. "Add SSH key" 버튼을 클릭합니다.

2.5 연결 테스트

SSH 설정이 제대로 되었는지 확인합니다.

ssh -T git@github.com

처음 연결하면 호스트를 신뢰할 것인지 물어봅니다. "yes"를 입력하세요. 성공하면 다음과 같은 메시지가 나타납니다.

Hi username! You've successfully authenticated, but GitHub does not provide shell access.

3. 원격 저장소 생성 및 연결

3.1 GitHub에서 새 저장소 만들기

GitHub 웹사이트에서 새 저장소를 만들어봅시다.

  1. GitHub 홈페이지 오른쪽 상단의 "+" 버튼을 클릭합니다.
  2. "New repository"를 선택합니다.
  3. 저장소 이름(Repository name)을 입력합니다.
  4. 설명(Description)을 입력합니다 (선택사항이지만 권장).
  5. 공개(Public) 또는 비공개(Private)를 선택합니다.
  6. "Create repository"를 클릭합니다.

저장소 이름 규칙:

  • 영문 소문자, 숫자, 하이픈(-), 언더스코어(_)를 사용합니다.
  • 프로젝트의 내용을 알 수 있는 명확한 이름을 선택하세요.
  • 예: my-portfolio, react-todo-app, python-data-analysis

3.2 로컬 저장소와 원격 저장소 연결하기

이미 로컬에서 작업 중인 프로젝트가 있다면, 이를 GitHub 저장소와 연결할 수 있습니다.

# 로컬 프로젝트 폴더로 이동
cd my-project

# Git 저장소 초기화 (아직 안 했다면)
git init

# 원격 저장소 추가
git remote add origin git@github.com:사용자명/저장소명.git

# 원격 저장소 확인
git remote -v

origin은 원격 저장소의 별명입니다. 관례적으로 메인 원격 저장소를 origin이라고 부릅니다.

3.3 git clone - 원격 저장소 복제하기

다른 사람의 프로젝트나 이미 GitHub에 있는 프로젝트를 내 컴퓨터로 가져올 때 사용합니다.

# SSH 방식 (권장)
git clone git@github.com:사용자명/저장소명.git

# HTTPS 방식
git clone https://github.com/사용자명/저장소명.git

# 다른 폴더 이름으로 클론
git clone git@github.com:사용자명/저장소명.git my-folder-name

3.4 git push - 로컬 변경사항 올리기

로컬에서 커밋한 내용을 원격 저장소에 업로드합니다.

# 기본 push
git push origin main

# 처음 push할 때 (-u 옵션으로 기본 브랜치 설정)
git push -u origin main

# 이후에는 간단하게
git push

-u 옵션을 사용하면 로컬의 main 브랜치와 원격의 origin/main 브랜치가 연결되어, 이후에는 git push만 입력해도 됩니다.

3.5 git pull - 원격 변경사항 가져오기

다른 사람이 원격 저장소에 올린 변경사항을 내 로컬에 가져옵니다.

# 원격 저장소의 변경사항 가져와서 합치기
git pull origin main

# 기본 브랜치가 설정되어 있다면
git pull

git pull은 사실 두 가지 작업을 한 번에 수행합니다: git fetch(원격의 변경사항 다운로드) + git merge(로컬 브랜치에 합치기).

3.6 git fetch - 원격 변경사항 확인하기

원격 저장소의 변경사항을 가져오되, 로컬 브랜치에 합치지는 않습니다. 변경사항을 확인한 후에 합칠지 결정할 수 있습니다.

# 원격의 모든 변경사항 가져오기
git fetch origin

# 원격과 로컬의 차이 확인
git log origin/main..main  # 로컬에만 있는 커밋
git log main..origin/main  # 원격에만 있는 커밋

# 확인 후 합치기
git merge origin/main

4. GitHub 웹 인터페이스 활용하기

GitHub는 터미널 없이도 웹에서 다양한 작업을 할 수 있습니다.

4.1 파일 보기 및 편집

  • 저장소에서 파일을 클릭하면 내용을 볼 수 있습니다.
  • 연필 아이콘을 클릭하면 웹에서 직접 파일을 수정할 수 있습니다.
  • 수정 후 아래쪽에서 커밋 메시지를 입력하고 "Commit changes"를 클릭하면 됩니다.

4.2 커밋 이력 확인

  • 저장소 메인 페이지에서 "commits" 링크를 클릭합니다.
  • 각 커밋을 클릭하면 변경된 내용을 확인할 수 있습니다.
  • 추가된 줄은 녹색, 삭제된 줄은 빨간색으로 표시됩니다.

4.3 브랜치 관리

  • 브랜치 드롭다운에서 현재 브랜치를 확인하고 다른 브랜치로 전환할 수 있습니다.
  • 새 브랜치를 생성할 수도 있습니다.
  • Settings > Branches에서 기본 브랜치를 변경할 수 있습니다.

4.4 Fork와 Star

  • Star: 마음에 드는 프로젝트에 별을 달아 북마크하는 기능입니다. 나중에 다시 찾기 쉽고, 프로젝트에 대한 관심을 표현하는 방법이기도 합니다.
  • Fork: 다른 사람의 저장소를 내 계정으로 복사합니다. 원본에 영향을 주지 않고 자유롭게 수정할 수 있습니다. 오픈소스에 기여할 때 주로 사용합니다.

5. README.md 작성하기

README 파일은 프로젝트의 얼굴입니다. GitHub에서 저장소에 접속하면 가장 먼저 보이는 것이 README 파일입니다. 좋은 README는 프로젝트의 가치를 높이고, 다른 사람들이 프로젝트를 이해하고 사용하는 데 큰 도움이 됩니다.

5.1 README에 포함할 내용

  • 프로젝트 제목과 설명: 이 프로젝트가 무엇인지 간단히 설명
  • 설치 방법: 프로젝트를 로컬에서 실행하는 방법
  • 사용 방법: 기본적인 사용법이나 예제
  • 기능: 주요 기능 목록
  • 기술 스택: 사용된 기술이나 라이브러리
  • 기여 방법: 프로젝트에 기여하고 싶은 사람들을 위한 가이드
  • 라이선스: 프로젝트의 사용 조건

5.2 README 작성 예시

# 프로젝트 이름

프로젝트에 대한 간단한 설명을 여기에 작성합니다.

## 기능

- 기능 1: 설명
- 기능 2: 설명
- 기능 3: 설명

## 설치 방법

```bash
# 저장소 클론
git clone https://github.com/username/project.git

# 디렉토리 이동
cd project

# 의존성 설치
npm install
```

## 사용 방법

```bash
# 개발 서버 실행
npm run dev
```

## 기술 스택

- Frontend: React, TypeScript
- Backend: Node.js, Express
- Database: PostgreSQL

## 기여하기

1. 이 저장소를 Fork합니다.
2. 새 브랜치를 생성합니다 (`git checkout -b feature/amazing-feature`).
3. 변경사항을 커밋합니다 (`git commit -m 'Add amazing feature'`).
4. 브랜치에 Push합니다 (`git push origin feature/amazing-feature`).
5. Pull Request를 생성합니다.

## 라이선스

MIT License

5.3 마크다운 문법 팁

  • # 제목: H1 제목 (# 개수로 H1~H6 조절)
  • **굵게**: 굵은 글씨
  • *기울임*: 기울인 글씨
  • `코드`: 인라인 코드
  • ```언어명 코드 ```: 코드 블록
  • - 항목: 순서 없는 목록
  • 1. 항목: 순서 있는 목록
  • [텍스트](URL): 링크
  • ![대체텍스트](이미지URL): 이미지

6. Issues와 Projects로 프로젝트 관리하기

6.1 Issues 활용하기

Issues는 프로젝트의 할 일, 버그, 기능 요청 등을 관리하는 도구입니다.

Issue 작성 팁:

  • 명확한 제목을 작성합니다.
  • 문제 상황이나 요청 사항을 구체적으로 설명합니다.
  • 버그 리포트라면 재현 방법을 포함합니다.
  • 관련 스크린샷이나 로그를 첨부합니다.

Labels 활용:

Issues에 라벨을 붙여 분류할 수 있습니다.

  • bug: 버그 수정
  • enhancement: 기능 개선
  • documentation: 문서 관련
  • good first issue: 처음 기여하기 좋은 이슈
  • help wanted: 도움이 필요한 이슈

Issue 템플릿 만들기:

저장소에 .github/ISSUE_TEMPLATE/ 폴더를 만들고 마크다운 파일을 추가하면 Issue 템플릿을 사용할 수 있습니다.

6.2 Projects 활용하기

GitHub Projects는 칸반 보드 스타일의 프로젝트 관리 도구입니다.

기본 사용법:

  1. 저장소의 "Projects" 탭에서 새 프로젝트를 생성합니다.
  2. 컬럼을 생성합니다 (예: To Do, In Progress, Done).
  3. Issues나 Pull Requests를 카드로 추가합니다.
  4. 작업 진행에 따라 카드를 다른 컬럼으로 이동합니다.

자동화 기능:

Projects에서는 자동화 규칙을 설정할 수 있습니다.

  • 새 Issue가 생성되면 자동으로 "To Do" 컬럼에 추가
  • Pull Request가 머지되면 자동으로 "Done"으로 이동

7. GitHub Profile 꾸미기

GitHub 프로필은 개발자로서의 첫인상입니다. 잘 꾸며진 프로필은 취업이나 협업 기회에 긍정적인 영향을 줄 수 있습니다.

7.1 프로필 README 만들기

GitHub에는 숨겨진 기능이 있습니다. 사용자명과 동일한 이름의 저장소를 만들면, 그 저장소의 README가 프로필 페이지에 표시됩니다.

  1. 사용자명과 동일한 이름의 저장소를 생성합니다 (예: username/username).
  2. README.md 파일을 작성합니다.
  3. 프로필 페이지에서 확인합니다.

7.2 프로필 README 예시

# 안녕하세요! 저는 [이름]입니다

웹 개발자를 꿈꾸는 주니어 개발자입니다.

## 기술 스택

### Languages
![JavaScript](https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat&logo=javascript&logoColor=black)
![Python](https://img.shields.io/badge/-Python-3776AB?style=flat&logo=python&logoColor=white)

### Frameworks
![React](https://img.shields.io/badge/-React-61DAFB?style=flat&logo=react&logoColor=black)
![Node.js](https://img.shields.io/badge/-Node.js-339933?style=flat&logo=node.js&logoColor=white)

## GitHub 통계

![GitHub stats](https://github-readme-stats.vercel.app/api?username=사용자명&show_icons=true)

## 연락처

- Email: email@example.com
- Blog: https://myblog.com

7.3 프로필 꾸미기 도구들

  • Shields.io: 다양한 배지를 만들 수 있습니다.
  • GitHub Readme Stats: GitHub 통계를 이미지로 보여줍니다.
  • GitHub Profile Trophy: 업적을 트로피로 표시합니다.
  • GitHub Readme Activity Graph: 활동 그래프를 보여줍니다.

7.4 기여 그래프(잔디) 채우기

프로필 페이지의 초록색 기여 그래프는 꾸준한 개발 활동을 보여주는 지표입니다. 다음 활동들이 기여로 카운트됩니다.

  • 기본 브랜치에 커밋하기
  • 이슈 열기
  • Pull Request 열기
  • Pull Request 리뷰하기

팁: 잔디를 채우는 것 자체가 목적이 되면 안 됩니다. 의미 있는 코드를 꾸준히 작성하다 보면 자연스럽게 채워집니다. 단순히 잔디를 채우기 위한 무의미한 커밋은 오히려 좋지 않은 인상을 줄 수 있습니다.

마치며

이번 글에서는 GitHub의 다양한 기능들을 살펴봤습니다. SSH 키 설정부터 원격 저장소 관리, README 작성, Issues와 Projects 활용, 그리고 프로필 꾸미기까지 다뤘습니다.

GitHub는 단순한 코드 저장소를 넘어 개발자들의 소셜 네트워크이자 포트폴리오 플랫폼입니다. 오픈소스 프로젝트에 기여하고, 자신의 프로젝트를 공유하고, 다른 개발자들과 교류하면서 성장할 수 있는 공간입니다.

처음에는 익숙하지 않아서 어렵게 느껴질 수 있지만, 매일 조금씩 사용하다 보면 금방 손에 익습니다. 실수를 두려워하지 말고 적극적으로 GitHub를 활용해 보세요. 개인 프로젝트를 올리고, 다른 사람의 프로젝트에 스타를 달고, 관심 있는 오픈소스에 작은 기여라도 해보는 것부터 시작해 보시기 바랍니다.

다음 글에서는 브랜치 전략과 Pull Request를 활용한 팀 협업 방법에 대해 더 자세히 알아보겠습니다. GitHub와 함께하는 즐거운 개발 여정이 되시길 바랍니다!