====== GitHub와 연동하기 - 내 코드를 세상과 공유하기 ======
**드디어 GitHub와 연동할 시간입니다!** 🎉 이제 내 컴퓨터에 있는 코드를 인터넷에 올려서 어디서든 접근할 수 있고, 다른 사람들과 공유할 수 있게 됩니다. 차근차근 따라해보세요!
{{wiki:it:github:remote_operations_1.png?800}}
{{wiki:it:github:remote_operations_2.png?800}}
----
===== 1. 🌐 GitHub가 뭔가요? 다시 한 번 정리해보기 =====
**GitHub = 개발자들의 구글 드라이브**
----
==== 1) 왜 GitHub을 사용하나요? ====
* 📱 **어디서든 접근**: 집, 회사, 카페 어디서든 내 코드에 접근 가능
* 🔒 **안전한 백업**: 컴퓨터가 고장나도 코드가 안전하게 보관됨
* 👥 **협업**: 팀원들과 함께 프로젝트 진행 가능
* 🌍 **포트폴리오**: 내가 만든 프로젝트를 세상에 공개
* 📈 **버전 관리**: 코드의 변화를 체계적으로 관리
----
==== 2) 기본 개념 이해하기 ====
* **로컬 저장소**: 내 컴퓨터에 있는 Git 저장소
* **원격 저장소**: GitHub에 있는 저장소 (인터넷에 있음)
* **동기화**: 로컬과 원격 저장소의 내용을 같게 만드는 것
===== 2. 🚀 GitHub 계정 만들기 =====
**아직 GitHub 계정이 없으시다면 먼저 만들어주세요!**
----
==== 1) 1단계: GitHub 가입하기 ====
- https://github.com 접속
- "Sign up" 버튼 클릭
- 사용자명, 이메일, 비밀번호 입력
- 이메일 인증 완료
----
==== 2) 2단계: Git에 GitHub 정보 등록하기 ====
# GitHub 계정 이메일로 설정 (매우 중요!)
git config --global user.email "your-github-email@example.com"
git config --global user.name "Your GitHub Username"
# 설정 확인
git config --list
**💡 왜 이메일이 중요한가요?**
* GitHub는 이메일로 누가 커밋했는지 확인합니다
* 이메일이 다르면 GitHub에서 내 기여도가 제대로 표시되지 않습니다
===== 3. 📁 GitHub에 새 저장소 만들기 =====
**두 가지 방법이 있습니다:**
----
==== 1) 방법 1: GitHub 웹사이트에서 만들기 (추천) ====
**1단계: GitHub에서 새 저장소 만들기**
- GitHub 로그인 후 오른쪽 상단 "+" 버튼 클릭
- "New repository" 선택
- Repository name 입력 (예: ''my-first-project'')
- "Public" 선택 (누구나 볼 수 있음)
- "Create repository" 클릭
**2단계: 내 컴퓨터와 연결하기**
# 내 로컬 저장소에서 실행
cd my-first-project
# GitHub 저장소와 연결
git remote add origin https://github.com/your-username/my-first-project.git
# 연결 확인
git remote -v
**3단계: 첫 번째 업로드**
# 내 코드를 GitHub에 업로드
git push -u origin main
# 성공하면 이런 메시지가 나옵니다:
# Enumerating objects: 3, done.
# Counting objects: 100% (3/3), done.
# Writing objects: 100% (3/3), 242 bytes | 242.00 KiB/s, done.
# Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
**축하합니다! 🎉 이제 GitHub에서 내 코드를 확인할 수 있습니다!**
===== 4. 🔄 기본 작업 흐름 - 매일 하게 될 일들 =====
**이제부터 매일 이런 순서로 작업하게 됩니다:**
----
==== 1) 일반적인 하루 작업 흐름 ====
# 1. 작업 시작 전 - 최신 코드 받아오기
git pull origin main
# 2. 코드 수정하기
# ... 여기서 파일을 수정합니다 ...
# 3. 변경사항 확인
git status
git diff
# 4. 변경사항 추가
git add .
# 5. 커밋하기
git commit -m "오늘 작업한 내용 설명"
# 6. GitHub에 업로드
git push origin main
# 7. GitHub 웹사이트에서 확인하기
**💡 이 흐름을 기억하세요:**
''pull → 수정 → add → commit → push''
===== 5. 📤 Push - 내 코드를 GitHub에 올리기 =====
----
==== 1) ''git push'' 명령어 이해하기 ====
**Push = 내 컴퓨터의 커밋들을 GitHub에 업로드하는 것**
# 기본 형태
git push origin main
# 처음 연결할 때 (한 번만)
git push -u origin main
# 이후부터는 간단히
git push
**💡 명령어 구성 요소:**
* ''git push'': 업로드 명령어
* ''origin'': 원격 저장소 이름 (GitHub 저장소)
* ''main'': 브랜치 이름 (기본 브랜치)
----
==== 2) Push 전 체크리스트 ====
**업로드하기 전에 항상 확인하세요:**
# 1. 현재 상태 확인
git status
# → "nothing to commit, working tree clean" 이어야 함
# 2. 최근 커밋 확인
git log --oneline -3
# → 업로드할 커밋들이 맞는지 확인
# 3. 원격 저장소 확인
git remote -v
# → GitHub 주소가 맞는지 확인
# 4. 이제 안전하게 업로드
git push origin main
===== 6. 📥 Pull - GitHub에서 최신 코드 받아오기 =====
----
==== 1) 왜 Pull이 필요한가요? ====
**이런 상황에서 필요합니다:**
* 다른 컴퓨터에서 작업한 후
* 팀원이 코드를 수정한 후
* GitHub 웹사이트에서 직접 파일을 수정한 후
----
==== 2) ''git pull'' 명령어 사용하기 ====
# 기본 형태
git pull origin main
# 보통은 간단히
git pull
**💡 Pull이 하는 일:**
* GitHub에서 최신 커밋들을 다운로드
* 내 로컬 저장소에 자동으로 병합(merge)
----
==== 3) Pull 사용 예제 ====
# 작업 시작 전 항상 실행 (좋은 습관!)
git pull origin main
# 결과 예시:
# remote: Enumerating objects: 5, done.
# remote: Counting objects: 100% (5/5), done.
# remote: Compressing objects: 100% (3/3), done.
# remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
# Unpacking objects: 100% (3/3), 687 bytes | 687.00 KiB/s, done.
# From https://github.com/username/repository
# a1b2c3d..e4f5g6h main -> origin/main
# Updating a1b2c3d..e4f5g6h
# Fast-forward
# README.md | 2 ++
# 1 file changed, 2 insertions(+)
===== 7. 🔍 원격 저장소 정보 확인하기 =====
----
==== 1) ''git remote'' 명령어들 ====
# 연결된 원격 저장소 목록 보기
git remote
# 자세한 정보 보기
git remote -v
# 새 원격 저장소 추가
git remote add origin https://github.com/username/repository.git
# 원격 저장소 URL 변경
git remote set-url origin https://github.com/username/new-repository.git
# 원격 저장소 제거
git remote remove origin
**결과 예시:**
$ git remote -v
origin https://github.com/username/repository.git (fetch)
origin https://github.com/username/repository.git (push)
===== 8. 📊 원격 저장소 상태 확인하기 =====
----
==== 1) 로컬과 원격 저장소 비교하기 ====
# 원격 저장소 최신 정보 가져오기 (다운로드하지는 않음)
git fetch origin
# 로컬과 원격 저장소 차이 확인
git status
# 원격 저장소 브랜치 목록 보기
git branch -r
# 모든 브랜치 보기 (로컬 + 원격)
git branch -a
**상태 메시지 이해하기:**
# 로컬이 최신인 경우
Your branch is up to date with 'origin/main'.
# 로컬이 뒤처진 경우
Your branch is behind 'origin/main' by 2 commits.
(use "git pull" to update your local branch)
# 로컬이 앞선 경우
Your branch is ahead of 'origin/main' by 1 commit.
(use "git push" to publish your local commits)
===== 9. 🔄 실제 작업 시나리오 =====
----
==== 1) 시나리오 1: 집과 회사에서 번갈아 작업하기 ====
**집에서 작업 시작:**
# 1. 최신 코드 받기
git pull origin main
# 2. 코드 수정
echo "집에서 추가한 기능" >> features.txt
# 3. 커밋하고 업로드
git add features.txt
git commit -m "집에서 새 기능 추가"
git push origin main
**회사에서 작업 계속:**
# 1. 집에서 작업한 내용 받기
git pull origin main
# 2. 코드 수정
echo "회사에서 추가한 기능" >> features.txt
# 3. 커밋하고 업로드
git add features.txt
git commit -m "회사에서 기능 개선"
git push origin main
----
==== 2) 시나리오 2: 새로운 컴퓨터에서 작업하기 ====
**새 컴퓨터에서 기존 프로젝트 가져오기:**
# 1. 프로젝트 복제 (처음 한 번만)
git clone https://github.com/username/my-project.git
# 2. 프로젝트 폴더로 이동
cd my-project
# 3. 확인
git status
git log --oneline
# 4. 이제 평소처럼 작업 가능
===== 10. 🚨 자주 발생하는 문제와 해결법 =====
----
==== 1) 문제 1: Push가 거부될 때 ====
**오류 메시지:**
! [rejected] main -> main (non-fast-forward)
error: failed to push some refs to 'https://github.com/username/repository.git'
**원인:** GitHub에 내가 모르는 새로운 커밋이 있음
**해결법:**
# 1. 최신 코드 받기
git pull origin main
# 2. 충돌이 없으면 자동으로 병합됨
# 3. 다시 업로드
git push origin main
----
==== 2) 문제 2: 인증 오류 ====
**오류 메시지:**
remote: Support for password authentication was removed...
fatal: Authentication failed
**원인:** GitHub가 비밀번호 인증을 중단함
**해결법 (Personal Access Token 사용):**
- GitHub → Settings → Developer settings → Personal access tokens
- "Generate new token" 클릭
- 권한 선택 (repo 체크)
- 토큰 생성하고 복사
- Git에서 비밀번호 대신 토큰 사용
# 또는 SSH 키 사용 (더 안전)
# GitHub 문서 참조: %%https://docs.github.com/en/authentication/connecting-to-github-with-ssh%%
----
==== 3) 문제 3: 파일이 너무 클 때 ====
**오류 메시지:**
remote: error: File large-file.zip is 120.00 MB; this exceeds GitHub's file size limit of 100.00 MB
**해결법:**
# 1. 큰 파일을 .gitignore에 추가
echo "large-file.zip" >> .gitignore
# 2. 이미 추가된 큰 파일 제거
git rm --cached large-file.zip
# 3. 커밋
git commit -m "큰 파일 제거"
git push origin main
===== 11. 💡 고급 원격 저장소 작업 =====
----
==== 1) Fetch vs Pull 차이점 ====
# Fetch: 다운로드만 하고 병합하지 않음
git fetch origin
# Pull: 다운로드하고 자동으로 병합
git pull origin main
# Fetch 후 수동으로 병합
git fetch origin
git merge origin/main
**언제 Fetch를 사용하나요?**
* 원격 저장소에 어떤 변경사항이 있는지 확인만 하고 싶을 때
* 병합하기 전에 변경사항을 검토하고 싶을 때
----
==== 2) 여러 원격 저장소 관리하기 ====
# 원본 저장소 (upstream) 추가
git remote add upstream https://github.com/original-owner/repository.git
# 원격 저장소 목록 확인
git remote -v
# 원본 저장소에서 최신 코드 받기
git fetch upstream
git merge upstream/main
===== 12. 🎯 모범 사례 =====
----
==== 1) 좋은 습관들 ====
**1. 작업 시작 전 항상 Pull**
# 매일 작업 시작 전
git pull origin main
**2. 자주 Push하기**
# 작은 단위로 자주 커밋하고 업로드
git add .
git commit -m "작은 기능 완성"
git push origin main
**3. 의미있는 커밋 메시지**
# 좋은 예
git commit -m "로그인 페이지 UI 개선"
git commit -m "사용자 인증 버그 수정"
# 나쁜 예
git commit -m "수정"
git commit -m "ㅇㅇ"
**4. 민감한 정보 제외**
# .gitignore 파일에 추가
echo "password.txt" >> .gitignore
echo "config.json" >> .gitignore
echo ".env" >> .gitignore
===== 13. 📚 연습 문제 =====
**직접 해보면서 실력을 키워보세요:**
----
==== 1) 연습 1: 기본 원격 저장소 작업 ====
- GitHub에서 새 저장소 만들기
- 로컬 프로젝트와 연결하기
- 첫 번째 push 해보기
- GitHub에서 파일 확인하기
----
==== 2) 연습 2: 일반적인 작업 흐름 ====
- 코드 수정하기
- add, commit, push 하기
- GitHub에서 README 파일 수정하기
- 로컬에서 pull 해보기
----
==== 3) 연습 3: 새 컴퓨터에서 작업 ====
- 다른 폴더에서 git clone 해보기
- 코드 수정하고 push 해보기
- 원래 폴더에서 pull 해보기
===== 14. 🔗 관련 용어 =====
**더 자세한 설명이 필요하시면:**
- [[wiki:glossary:development_tools:git:repository|Repository]] - 저장소 개념
- [[wiki:glossary:development_tools:git:commit|Commit]] - 커밋 이해하기
- [[wiki:glossary:development_tools:git:github|GitHub]] - GitHub 자세히 알아보기
===== 15. 🚀 다음 단계 =====
**원격 저장소 작업을 익혔다면:**
- **[[wiki:it:github:branch_management|브랜치 관리]]** - 여러 기능을 동시에 개발하기
- **[[wiki:it:github:troubleshooting|문제 해결]]** - 막혔을 때 해결 방법
- **[[wiki:it:github:advanced_tips|고급 팁]]** - 더 효율적으로 사용하기
===== 16. 🎓 마무리 =====
**축하합니다! 🎉 이제 GitHub와 연동할 수 있습니다!**
**여러분이 배운 것들:**
- ✅ GitHub 계정 만들기
- ✅ 원격 저장소 생성하기
- ✅ Push로 코드 업로드하기
- ✅ Pull로 최신 코드 받아오기
- ✅ 일반적인 작업 흐름
- ✅ 문제 해결 방법
**이제 여러분의 코드는 안전하게 GitHub에 백업되고, 어디서든 접근할 수 있습니다!**
**다음 단계로 넘어가기 전에:**
- 실제 프로젝트로 연습해보세요
- 매일 push/pull 습관을 기르세요
- GitHub 웹사이트에서 내 저장소를 자주 확인해보세요
**이제 브랜치를 사용해서 더 안전하고 체계적으로 개발해보세요!** 🌟
----
**이전:** [[wiki:it:github:basic_commands|🔰 기본 Git 명령어]] | **다음:** [[wiki:it:github:branch_management|🌿 브랜치 관리]] | **목록:** [[wiki:it:github:start|📋 전체 문서 목록]]