공공부하자개발 · 영어 학습 노트
협업·배포
GitHub원격 협업 흐름0/5 완료
  • 01GitHub 시작
  • 02Pull Request 흐름
  • 03코드 리뷰와 병합 방식
  • 04이슈와 프로젝트 관리
  • 05포크와 오픈소스 기여
사이트 소개개인정보처리방침연락처
© 2026 공부하자
홈 › GitHub › 01 / 5

GitHub 시작

섹션 7진행 0 / 5
1왜 배우는가2핵심 원리3코드 예제4응용 변형 예제5자주 하는 실수 (Tip)6연습 문제7정리‹ 이전다음 ›

2. 핵심 원리

2.1 GitHub 와 로컬 저장소의 관계

GitHub 저장소는 내 컴퓨터의 로컬 저장소와 별개의 복사본입니다. 둘은 원격(remote)이라는 별명으로 연결되고 push·fetch·pull 로 데이터를 주고받습니다.

text
[내 컴퓨터]                       [GitHub]
 작업 트리
 로컬 저장소(.git)  --- push --->  원격 저장소(origin)
                    <-- fetch ---  github.com/kim/study.git

로컬에서 커밋을 아무리 쌓아도 push 전까지는 GitHub 에 아무것도 올라가지 않습니다. 이 점이 SVN 같은 중앙집중식 도구와 가장 다른 부분입니다.

2.2 계정과 조직

GitHub 계정은 개인 계정과 Organization 두 종류입니다. 회사·오픈소스 프로젝트는 보통 Organization 아래 저장소를 모아 둡니다.

구분 설명
개인 계정 가입 시 만드는 기본 계정, 저장소 소유자
Organization 여러 사람이 저장소를 함께 쓰는 조직 계정
Collaborator 저장소 단위로 초대하는 참여자
Team Organization 안에서 권한을 묶는 단위

개인 프로젝트는 개인 계정 아래 저장소를 만들면 충분합니다. 팀 프로젝트는 Organization 을 만들고 그 아래 저장소를 두는 편이 권한 관리가 쉽습니다.

2.3 인증 방식 1: HTTPS 와 PAT

HTTPS 로 push·clone 할 때는 비밀번호 대신 개인용 액세스 토큰(PAT, Personal Access Token)을 씁니다. GitHub 는 2021 년부터 계정 비밀번호로 인증하는 방식을 막았습니다.

PAT 는 GitHub 웹 화면의 Settings → Developer settings → Personal access tokens 에서 발급합니다. 발급 시 권한 범위(scope)와 만료 기간을 지정하고, 토큰 문자열은 그 화면을 벗어나면 다시 볼 수 없습니다. 이후 인증 요청에 사용자명과 토큰을 비밀번호 자리에 입력합니다.

2.4 인증 방식 2: SSH 키

SSH 키는 매번 토큰을 입력하지 않고도 인증하는 방식입니다. 공개키(public key)는 GitHub 계정에 등록하고 개인키(private key)는 내 컴퓨터에만 둡니다.

bash
ssh-keygen -t ed25519 -C "[email protected]"

-t ed25519 는 최신 권장 알고리즘이고, -C 뒤 문자열은 키를 구분하는 주석입니다. 별도 경로를 지정하지 않으면 ~/.ssh/id_ed25519 와 ~/.ssh/id_ed25519.pub 두 파일이 생깁니다.

2.5 공개키 등록과 ~/.ssh/config

생성한 공개키(id_ed25519.pub) 내용을 복사해 GitHub Settings → SSH and GPG keys → New SSH key 화면에 붙여 넣으면 등록이 끝납니다. 개인키는 절대 붙여 넣지 않습니다.

여러 계정이나 여러 서버를 쓸 때는 ~/.ssh/config 로 호스트별 설정을 나눕니다. 구체적인 파일 내용은 예제 1 에서 그대로 확인할 수 있습니다.

IdentitiesOnly yes 는 여러 키가 있을 때 지정한 키만 쓰도록 강제하는 옵션입니다. 이 설정이 없으면 ssh 가 다른 키부터 시도하다 인증에 실패하기도 합니다.

2.6 ssh -T 로 연결 확인

키 등록 뒤에는 ssh -T [email protected] 으로 연결을 확인합니다. 정상이면 아래와 같은 인사말이 뜨고 셸 자체는 열리지 않습니다.

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

이 명령은 인터넷 접근이 필요해 이 레슨의 실행 데모에는 포함하지 않았습니다. 첫 연결 시에는 호스트 지문(fingerprint)을 신뢰할지 묻는 확인 창도 함께 뜹니다.

2.7 새 저장소 만들기

GitHub 웹의 New repository 화면에서 이름과 공개 범위를 정하고, README·.gitignore·LICENSE 초기화 여부를 선택합니다.

옵션 켜면 생기는 일
Add a README file 첫 커밋으로 README.md 생성
Add .gitignore 언어별 무시 목록 커밋
Choose a license LICENSE 파일 커밋

하나라도 켜면 저장소가 커밋이 있는 상태로 만들어집니다. 반대로 모두 끄면 완전히 빈 저장소가 만들어지고, 이 경우에는 로컬에서 파일을 만들어 첫 push 로 채워야 합니다.

2.8 기존 프로젝트 올리기

이미 로컬에 있는 프로젝트를 GitHub 에 올릴 때는 빈 저장소를 만든 뒤 원격으로 등록합니다.

bash
git init -b main
git add .
git commit -m "커밋1: 첫 커밋"
git remote add origin <저장소 주소>
git push -u origin main

-u(--set-upstream)는 로컬 main 과 원격 origin/main 을 추적 관계로 묶습니다. 이후에는 git push·git pull 만으로 같은 브랜치를 주고받습니다.

2.9 클론

이미 존재하는 저장소를 내려받을 때는 git clone 한 번으로 원격 등록까지 끝납니다.

bash
git clone <저장소 주소> [폴더명]

clone 은 전체 커밋 이력과 브랜치 정보를 함께 받고, origin 이라는 이름으로 원격을 자동 등록합니다. 폴더명을 생략하면 저장소 이름과 같은 폴더가 생깁니다.

2.10 remote set-url 로 전환

주소 형식을 HTTPS 에서 SSH 로, 또는 그 반대로 바꿀 때는 다시 clone 할 필요 없이 remote set-url 만 쓰면 됩니다.

bash
git remote set-url origin [email protected]:kim/study.git

로컬 커밋 이력은 그대로 두고 다음 push·fetch 부터 새 주소를 씁니다. 인증 방식을 HTTPS 토큰에서 SSH 키로 바꿀 때 자주 씁니다.

2.11 사내 GitHub Enterprise

회사에서는 github.com 대신 사내망에 설치한 GitHub Enterprise Server 를 쓰기도 합니다. 사용법은 github.com 과 거의 같고 git clone [email protected]:team/project.git 처럼 주소만 사내 도메인으로 바뀝니다.

SSH 키 등록·PAT 발급 화면도 동일한 구조로 사내 서버 계정 설정에 있습니다. 차이는 인증서·방화벽 설정이 사내 IT 정책을 따른다는 점입니다.

2.12 폐쇄망 대안

인터넷도 사내 GitHub 도 없는 완전 폐쇄망에서는 04 레슨에서 다룬 git bundle 이나 파일 서버 위의 bare 저장소로 같은 역할을 합니다. 이 레슨의 예제 전체가 그 방식, 즉 로컬 bare 저장소를 GitHub 대신으로 써서 진행됩니다.

핵심 원리
  • 2.1 GitHub 와 로컬 저장소의 관계
  • 2.2 계정과 조직
  • 2.3 인증 방식 1: HTTPS 와 PAT
  • 2.4 인증 방식 2: SSH 키
  • 2.5 공개키 등록과 ~/.ssh/config
  • 2.6 ssh -T 로 연결 확인
  • 2.7 새 저장소 만들기
  • 2.8 기존 프로젝트 올리기
  • 2.9 클론
  • 2.10 remote set-url 로 전환
  • 2.11 사내 GitHub Enterprise
  • 2.12 폐쇄망 대안
이전 섹션1 왜 배우는가2 / 7다음 섹션3 코드 예제