====== 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|📋 전체 문서 목록]]