강의/Git & Github 실무 활용 완벽 가이드

GitHub 기본 개념과 실전 사용법 정리

studylida 2025. 2. 12. 15:09

GitHub 사용법 정리

GitHub의 역할

GitHub는 Git 저장소를 클라우드에서 호스팅하는 서비스다. 단순한 코드 저장소가 아니라 협업 도구로서도 활용된다.

  • 원격 저장소 관리: 언제 어디서나 코드 접근 가능
  • 팀 협업 지원: 여러 개발자가 동시에 작업 가능
  • 코드 리뷰 및 프로젝트 관리: 이슈 트래킹, 풀 리퀘스트(PR) 지원

GitHub를 활용한 협업 예시

  1. 개발자는 feature/login 브랜치에서 로그인 기능을 개발
  2. 디자이너는 design/ui-update 브랜치에서 UI를 수정
  3. 각자의 변경 사항을 GitHub에 푸시 후 리뷰를 거쳐 main에 병합

GitHub를 사용하는 이유

1. 코드 백업 및 협업

  • 원격 저장소를 통해 코드 백업 가능
  • 여러 브랜치를 활용한 팀 개발 가능

2. 오픈 소스 기여

  • React, TensorFlow 같은 오픈 소스 프로젝트에 참여 가능
  • 개발자로서 포트폴리오를 쌓을 기회 제공

3. 개발자 네트워킹 및 채용 기회

  • GitHub 활동이 포트폴리오 역할을 수행
  • 오픈 소스 기여로 개발 커뮤니티와 연결 가능

4. 최신 기술 동향 파악

  • 프레임워크 및 라이브러리의 업데이트를 실시간으로 확인 가능

GitHub 저장소 복제 (Git Clone)

git clone 명령어를 사용하면 원격 저장소를 로컬 환경으로 복제할 수 있다.

사용법

git clone [저장소_주소]

예제

git clone https://github.com/facebook/react.git
  • react 폴더가 생성되며, 저장소의 모든 파일과 커밋 기록이 로컬에 다운로드됨

git clone의 장점

  • 오픈 소스 프로젝트를 로컬에서 직접 실행 및 실험 가능
  • 팀 프로젝트에서 최신 소스를 받아와 협업 가능

GitHub가 아닌 저장소 복제

GitHub 외에도 GitLab, Bitbucket 등에서 git clone을 사용할 수 있다.

예제 (GitLab 저장소 복제)

git clone https://gitlab.com/example/sample-project.git

주의할 점

  • 공개 저장소는 누구나 복제 가능
  • 비공개 저장소는 접근 권한 필요
  • 클론한 저장소를 수정하려면 기여자로 등록되어 있어야 함

SSH를 이용한 GitHub 인증

GitHub는 기본적으로 HTTPS와 SSH 두 가지 방식으로 저장소에 접근할 수 있다. SSH를 설정하면 매번 GitHub 계정 정보를 입력할 필요 없이 안전하고 편리하게 원격 저장소와 통신할 수 있다.

SSH 키 생성 및 설정

1. SSH 키 확인

기존에 SSH 키가 있는지 확인하려면 다음 명령어를 실행한다.

ls -al ~/.ssh

id_rsa.pub 또는 id_ed25519.pub 파일이 있으면 이미 SSH 키가 설정되어 있다.

2. 새로운 SSH 키 생성

SSH 키가 없다면 다음 명령어로 새 키를 생성한다.

ssh-keygen -t ed25519 -C "your_email@example.com"
  • your_email@example.com에는 GitHub 계정 이메일을 입력한다.
  • 기본 저장 경로(~/.ssh/id_ed25519)를 그대로 사용하면 된다.
  • 패스프레이즈는 선택 사항이다.

3. SSH 에이전트 실행 및 키 추가

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

4. SSH 공개 키를 GitHub에 등록

SSH 공개 키를 복사한다.

cat ~/.ssh/id_ed25519.pub

GitHub에서 Settings → SSH and GPG keys → New SSH Key로 이동하여 복사한 공개 키를 등록한다.

5. SSH 연결 테스트

ssh -T git@github.com

정상적으로 설정되었다면 다음과 같은 메시지가 출력된다.

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

SSH 설정의 장점

  • 비밀번호 입력 없이 GitHub 저장소 접근 가능
  • HTTPS보다 보안성이 높음
  • 푸시(push) 및 풀(pull) 작업이 편리해짐


GitHub 저장소 생성 및 연결

1. 기존 로컬 저장소를 GitHub에 업로드

git remote add origin https://github.com/사용자명/my-repo.git
git branch -M main
git push -u origin main

2. GitHub 저장소를 먼저 만들고 클론

git clone https://github.com/사용자명/my-repo.git
cd my-repo

핵심 정리

  • 기존 저장소를 업로드할 땐 git remote add origin 사용
  • GitHub 저장소를 먼저 만들었다면 git clone으로 가져옴
  • 변경 사항을 git push로 업로드

Git Remote 설정

Git 원격 저장소(remote)는 로컬과 클라우드 저장소를 연결하는 역할을 한다.

1. 현재 원격 저장소 확인

git remote -v

2. 원격 저장소 추가

git remote add origin https://github.com/사용자명/my-repo.git

3. 원격 저장소 삭제 및 변경

git remote remove origin
git remote rename old-name new-name

git clone vs git remote add

명령어 설명
git clone 원격 저장소를 복제하며 자동으로 origin 설정
git remote add 기존 로컬 저장소에 원격 저장소를 추가

Git Push: 변경 사항 업로드

git push는 로컬 변경 사항을 원격 저장소(GitHub)로 업로드하는 명령어다.

기본 구문

git push <원격 저장소> <브랜치 이름>
git push origin main

브랜치별 푸시

git push origin feature-branch

다른 이름으로 푸시

git push origin my-local-branch:remote-branch

예제:

git push origin feature:develop
  • 로컬 feature 브랜치를 원격 develop 브랜치에 푸시

Git Push 핵심

  • GitHub는 자동으로 동기화되지 않음 → git push 실행 필요
  • 브랜치를 변경하면 해당 브랜치의 코드가 다르게 나타남

git push -u 옵션 (업스트림 설정)

-u 옵션을 사용하면 업스트림 브랜치를 설정하여 이후 간단한 git push 만으로 변경 사항을 업로드할 수 있다.

사용법

git push -u origin my-branch

이후

git push  # 원격 my-branch로 자동 푸시

git push -u의 장점

  • 한 번 설정하면 이후 git push만 입력하면 됨
  • 로컬과 원격 브랜치가 자동으로 연결됨

GitHub에서 브랜치 관리

기본 브랜치 (Main vs Master)

  • GitHub는 기본 브랜치를 master에서 main으로 변경함
  • 기존 프로젝트에서는 여전히 master 브랜치를 사용할 수도 있음

브랜치 이름 변경

git branch -M main
git push origin main

핵심

  • GitHub의 기본 브랜치는 main
  • 일부 프로젝트는 master를 유지할 수도 있음

GitHub 협업 실습

연습 링크

1. 로컬에서 저장소 생성 및 GitHub 연결

git init
git remote add origin <GitHub 저장소 URL>

2. 파일 생성 및 첫 커밋

touch favorites.txt
git add favorites.txt
git commit -m "첫 커밋"
git push -u origin main

3. 브랜치 생성 및 변경 사항 반영

git branch foods
git branch movies
  • foods 브랜치에서 좋아하는 음식 추가 후 커밋
  • movies 브랜치에서 좋아하는 영화 추가 후 커밋

4. 각 브랜치를 GitHub에 푸시

git push origin foods
git push origin movies

5. 병합 및 충돌 해결

git switch main
git merge foods
git merge movies  # 충돌 발생 가능
  • 충돌 발생 시 수정 후 저장

6. 최종 푸시

git push origin main

정리

작업 명령어
원격 저장소 복제 git clone <저장소 주소>
원격 저장소 추가 git remote add origin <저장소 주소>
변경 사항 푸시 git push origin <브랜치>
SSH 키 생성 ssh-keygen -t ed25519 -C "이메일"
SSH 키 등록 GitHub → Settings → SSH and GPG keys
업스트림 브랜치 설정 git push -u origin <브랜치>
브랜치 이름 변경 git branch -M main