Part 1의 기초를 마쳤다면 이제 팀 협업의 핵심으로 들어갑니다.
Pull Request, 충돌 해결, 자동화, 오픈소스 기여까지 실전 GitHub입니다.
✅ Pull Request — 코드 리뷰 문화와 PR 작성법
✅ 충돌 해결 — Conflict가 왜 생기고 어떻게 처리하는가
✅ GitHub Actions — YAML로 CI/CD 파이프라인 이해
✅ 오픈소스 기여 — Fork·Issue·PR 전체 흐름
✅ GitHub 커리어 — 잔디·Profile·Pinned Repository
PR은 "내 브랜치의 변경사항을 main에 합쳐달라"는 공식 요청입니다. 코드 리뷰의 핵심 도구입니다.
직접 main에 push하는 것은 편집장 검토 없이 기사를 바로 게재하는 것과 같습니다. PR은 "편집 검토 요청"입니다.
| 역할 | 할 일 | 에티켓 |
|---|---|---|
| 리뷰어 | 코드 읽고 댓글, Approve 또는 Request Changes | 코드를 비판하되 사람을 비판하지 않기 |
| 작성자 | 리뷰 댓글에 답하고 수정 후 Re-request review | 방어적이지 않게, 배움의 자세로 |
충돌은 같은 파일의 같은 줄을 두 사람이 다르게 수정했을 때 발생합니다. 무섭지 않습니다. 해결하면 됩니다.
git status로 "both modified" 파일 목록 확인git add 파일명 → "충돌 해결했다"는 신호git commit → 충돌 해결 commit이 자동 생성됨코드를 push하면 자동으로 테스트 실행, 빌드, 배포가 되도록 만드는 것이 Actions입니다.
Actions는 "어떤 이벤트가 발생하면 어떤 일을 자동으로 해라"는 레시피(YAML 파일)입니다.
| 개념 | 설명 | 예시 |
|---|---|---|
| Workflow | 자동화 전체 레시피 (.yml 파일) | CI/CD 파이프라인 전체 |
| Event | 레시피를 실행시키는 방아쇠 | push, pull_request, schedule |
| Job | 레시피의 단계 묶음 | test, build, deploy |
| Step | Job 안의 개별 명령 | npm install, npm test |
| Runner | 실행 환경 (가상 서버) | ubuntu-latest |
| 용도 | 설명 | Event |
|---|---|---|
| CI (테스트 자동화) | push·PR 시 자동으로 테스트 실행 | push, pull_request |
| CD (배포 자동화) | main merge 시 자동 서버 배포 | push to main |
| 코드 품질 검사 | Linter, 코드 포맷 자동 검사 | pull_request |
| 정기 작업 | 매일 자정 데이터 백업·알림 | schedule (cron) |
| GitHub Pages 배포 | 정적 사이트 자동 빌드·배포 | push to main |
Actions에서 외부 서비스 API Key, 배포 서버 비밀번호 등은 Secrets에 등록합니다.
${{ secrets.MY_API_KEY }} 형식으로 참조남의 프로젝트에 코드를 기여하는 전체 흐름을 배웁니다. Fork→브랜치→PR의 표준 패턴입니다.
Fork는 남의 저장소를 내 GitHub 계정으로 복사하는 것입니다. 원본에 영향을 주지 않고 자유롭게 수정할 수 있습니다.
| 라벨 | 의미 | 추천 레벨 |
|---|---|---|
| good first issue | 초보자 친화적 이슈 | ⭐ 첫 기여에 최적 |
| help wanted | 도움이 필요한 이슈 | ⭐⭐ 경험 조금 있을 때 |
| documentation | 문서 개선 | ⭐ 코드 몰라도 기여 가능 |
| bug | 버그 수정 | ⭐⭐⭐ 도메인 이해 필요 |
GitHub는 개발자의 살아있는 포트폴리오입니다. 잔디부터 Profile README까지 전략적으로 관리합니다.
GitHub 프로필의 녹색 잔디 그래프는 활동량을 시각화합니다.
| 활동 | 잔디 카운트? | 팁 |
|---|---|---|
| Public repo commit | ✅ 카운트됨 | 매일 TIL 기록 |
| Private repo commit | ✅ 카운트됨 (Settings 설정 시) | 설정에서 private 활동 표시 ON |
| Issue 생성·댓글 | ✅ 카운트됨 | 오픈소스 이슈 참여 |
| PR 생성·리뷰 | ✅ 카운트됨 | 팀 프로젝트 PR 참여 |
| Star 누르기 | ❌ 안 됨 | Star는 잔디와 무관 |
자신의 GitHub 아이디와 같은 이름의 저장소를 만들면 프로필에 README가 표시됩니다.
프로필에 최대 6개 저장소를 핀으로 고정할 수 있습니다. 포트폴리오의 첫인상입니다.
| 기능 | 용도 |
|---|---|
| Issues | 버그 리포트, 기능 요청, 할 일 관리. 팀 소통 공간. |
| Projects | 칸반 보드 방식의 이슈·PR 관리. Notion 같은 프로젝트 보드. |
| Releases | 특정 commit에 버전 태그(v1.0.0)를 붙여 공식 릴리스 관리. |
| Wiki | 저장소 전용 문서 사이트. 기여 가이드, 아키텍처 문서 등. |
| Discussions | Issue보다 자유로운 Q&A·아이디어 토론 공간. |
각 전문가를 클릭하세요. Inspector 권고안의 역할 프롬프트 형식으로 작성되었습니다.
12문항으로 협업·심화 개념을 점검합니다.
# feature 브랜치에서 작업 후 PR 생성 git switch -c feature/기능명 # ... 작업 ... git add . git commit -m "feat: 기능명 추가" git push origin feature/기능명 # GitHub에서 "New Pull Request" 생성 # 리뷰 후 merge → 브랜치 삭제 # 로컬에서 정리 git switch main git pull origin main git branch -d feature/기능명
# merge 시 충돌 발생 git merge feature/브랜치명 # CONFLICT 메시지 확인 # 충돌 파일 확인 git status # 파일 열어서 수동 해결: # <<<<<<< HEAD # 내 내용 # ======= # 상대방 내용 # >>>>>>> feature/브랜치명 # → 원하는 내용으로 수정하고 표시 제거 # 해결 완료 표시 git add 충돌파일명 # merge 커밋 git commit
# 1. Fork (GitHub 웹에서) # 원본 저장소 → Fork 버튼 클릭 # 2. 내 fork 클론 git clone https://github.com/내계정/저장소.git cd 저장소 # 3. upstream 등록 git remote add upstream https://github.com/원본계정/저장소.git # 4. 브랜치 생성 후 작업 git switch -c fix/오타수정 # ... 수정 ... git add . && git commit -m "fix: 오타 수정" git push origin fix/오타수정 # 5. GitHub에서 원본 저장소로 PR 생성 # 6. upstream 최신화 (나중에 필요할 때) git fetch upstream git merge upstream/main
# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
- run: npm install
- run: npm test## 변경 내용 ## 변경 이유 ## 테스트 방법 - [ ] 테스트 항목 1 - [ ] 테스트 항목 2 ## 스크린샷 ## 관련 이슈 Closes #이슈번호