콘텐츠로 이동

4장: 원격 저장소 - GitHub에 코드 올리기

로컬과 리모트

지금까지는 내 컴퓨터(로컬)에서만 작업했습니다. GitHub는 인터넷에 연결된 저장소(리모트) 를 제공합니다.

내 컴퓨터 (로컬)  ⟷  GitHub (리모트)
git push ↑         ↓ git pull

왜 필요한가요? - 백업: 컴퓨터가 고장 나도 코드는 안전 - 공유: 다른 사람이 내 코드를 볼 수 있음 - 협업: 여럿이 함께 작업 가능

GitHub 계정 만들기

  1. github.com 접속
  2. Sign up 버튼 클릭
  3. 이메일, 비밀번호, 사용자 이름 입력
  4. 이메일 인증 완료

SSH 키 설정 (권장)

GitHub와 통신할 때 매번 비밀번호를 안 치려면 SSH 키를 설정합시다.

# SSH 키 생성
ssh-keygen -t ed25519 -C "[email protected]"
# 엔터 세 번 (기본 위치, 빈 암호)

# 공개 키 확인
cat ~/.ssh/id_ed25519.pub

출력된 내용을 복사한 후: 1. GitHub → Settings → SSH and GPG keys → New SSH key 2. Title: "내 노트북" 등 아무 이름 3. Key: 복사한 공개 키 붙여넣기 4. Add SSH key 클릭

# 연결 테스트
ssh -T [email protected]
# Hi username! You've successfully authenticated... 나오면 성공!

원격 저장소 연결하기

방법 A: GitHub에서 먼저 만들고 로컬에서 연결

  1. GitHub에서 "New repository" 클릭
  2. 저장소 이름 입력 (예: my-project)
  3. Create repository 클릭
# 로컬 저장소에 원격 저장소 연결
git remote add origin [email protected]:username/my-project.git

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

방법 B: 로컬에서 먼저 만들고 GitHub에 올리기

GitHub에서 빈 저장소를 만든 후:

git init
# ... 파일 만들고 커밋 ...
git remote add origin [email protected]:username/my-project.git
git branch -M main
git push -u origin main

push & pull: 주고받기

push: 로컬 → 원격

# 처음 push할 때
git push -u origin main

# 이후에는
git push

-u (또는 --set-upstream)는 로컬 브랜치와 원격 브랜치를 연결합니다. 처음 한 번만 하면 됩니다.

pull: 원격 → 로컬

# 원격 저장소의 변경사항 가져오기
git pull

clone: 원격 저장소 복사해오기

# 다른 사람의 저장소 (또는 내 저장소) 복제
git clone [email protected]:username/project.git

# 특정 폴더에 복제
git clone [email protected]:username/project.git my-folder

원격 브랜치 다루기

# 원격 브랜치 목록 보기
git branch -r

# 원격 브랜치로 이동하기
git checkout feature/login
# Git이 자동으로 원격 브랜치를 추적해서 로컬 브랜치를 만들어줌

# 로컬 브랜치를 원격에 push
git push -u origin feature/login

# 원격 브랜치 삭제
git push origin --delete feature/login

.gitignore: 올리지 말아야 할 것들

# .gitignore 파일 만들기

.gitignore 파일 내용 예시:

# 컴파일된 파일
*.pyc
__pycache__/

# 환경 설정
.env
config.local.json

# IDE 설정
.vscode/
.idea/

# OS 파일
.DS_Store
Thumbs.db

# 의존성 폴더 (언어별)
node_modules/
venv/

중요: 비밀번호, API 키 등이 포함된 파일은 절대 GitHub에 올리면 안 됩니다. .gitignore에 꼭 추가하세요!

만약 이미 커밋한 파일을 나중에 .gitignore에 추가했다면:

# 파일을 Git 추적에서 제거 (실제 파일은 삭제되지 않음)
git rm --cached secrets.json
git commit -m "stop tracking secrets.json"

실전 시나리오: 집과 학교에서 작업하기

학교 컴퓨터에서:
  1. git clone [email protected]:username/my-project.git
  2. 코드 수정
  3. git add . && git commit -m "update from school"
  4. git push

집 컴퓨터에서:
  1. git pull   # 학교에서 한 작업 가져오기
  2. 코드 수정
  3. git add . && git commit -m "update from home"
  4. git push

명령어 요약

명령어 역할
git remote add origin <url> 원격 저장소 연결
git remote -v 원격 저장소 목록
git push -u origin main 첫 push
git push 이후 push
git pull 원격 변경사항 가져오기
git clone <url> 원격 저장소 복제
git push origin --delete <브랜치> 원격 브랜치 삭제

실습 미션

  1. GitHub에 git-practice 저장소를 만드세요
  2. 로컬 practice 저장소와 연결하세요
  3. git push -u origin main으로 코드를 올리세요
  4. GitHub 웹사이트에서 파일이 올라간 것을 확인하세요
  5. .gitignore 파일을 만들고 *.log를 추가한 후 커밋 & push 하세요
  6. 다른 폴더에서 git clone으로 가져와 보세요

이전 장: 03-git-branch.md 다음 장: 05-github-collaboration.md - GitHub로 협업하기