4장: 원격 저장소 - GitHub에 코드 올리기¶
로컬과 리모트¶
지금까지는 내 컴퓨터(로컬)에서만 작업했습니다. GitHub는 인터넷에 연결된 저장소(리모트) 를 제공합니다.
내 컴퓨터 (로컬) ⟷ GitHub (리모트)
git push ↑ ↓ git pull
왜 필요한가요? - 백업: 컴퓨터가 고장 나도 코드는 안전 - 공유: 다른 사람이 내 코드를 볼 수 있음 - 협업: 여럿이 함께 작업 가능
GitHub 계정 만들기¶
- github.com 접속
- Sign up 버튼 클릭
- 이메일, 비밀번호, 사용자 이름 입력
- 이메일 인증 완료
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에서 먼저 만들고 로컬에서 연결¶
- GitHub에서 "New repository" 클릭
- 저장소 이름 입력 (예:
my-project) - 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 <브랜치> |
원격 브랜치 삭제 |
실습 미션¶
- GitHub에
git-practice저장소를 만드세요 - 로컬
practice저장소와 연결하세요 git push -u origin main으로 코드를 올리세요- GitHub 웹사이트에서 파일이 올라간 것을 확인하세요
.gitignore파일을 만들고*.log를 추가한 후 커밋 & push 하세요- 다른 폴더에서
git clone으로 가져와 보세요
이전 장: 03-git-branch.md 다음 장: 05-github-collaboration.md - GitHub로 협업하기