GitHub ์์ํ๊ธฐ
GitHub ์์ํ๊ธฐ¶
1. GitHub์ด๋?¶
GitHub์ Git ์ ์ฅ์๋ฅผ ํธ์คํ ํ๋ ์น ์๋น์ค์ ๋๋ค.
GitHub์ ์ฃผ์ ๊ธฐ๋ฅ¶
- ์๊ฒฉ ์ ์ฅ์: ์ฝ๋๋ฅผ ํด๋ผ์ฐ๋์ ๋ฐฑ์
- ํ์ ๋๊ตฌ: Pull Request, Issues, Projects
- ์์ ์ฝ๋ฉ: ๋ค๋ฅธ ๊ฐ๋ฐ์์ ์ฝ๋ ํ์ ๋ฐ ๊ธฐ์ฌ
- CI/CD: GitHub Actions๋ก ์๋ํ
GitHub ๊ณ์ ๋ง๋ค๊ธฐ¶
- github.com ์ ์
- "Sign up" ํด๋ฆญ
- ์ด๋ฉ์ผ, ๋น๋ฐ๋ฒํธ, ์ฌ์ฉ์๋ช ์ ๋ ฅ
- ์ด๋ฉ์ผ ์ธ์ฆ ์๋ฃ
2. SSH ํค ์ค์ (๊ถ์ฅ)¶
SSH ํค๋ฅผ ์ฌ์ฉํ๋ฉด ๋งค๋ฒ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ์ง ์์๋ ๋ฉ๋๋ค.
SSH ํค ์์ฑ¶
# SSH ํค ์์ฑ (์ด๋ฉ์ผ์ GitHub ๊ณ์ ์ด๋ฉ์ผ)
ssh-keygen -t ed25519 -C "your_email@example.com"
# ๊ธฐ๋ณธ ์ค์ ์ผ๋ก ์งํ (Enter 3๋ฒ)
SSH ํค ํ์ธ¶
# ๊ณต๊ฐ ํค ์ถ๋ ฅ
cat ~/.ssh/id_ed25519.pub
GitHub์ SSH ํค ๋ฑ๋ก¶
- GitHub โ Settings โ SSH and GPG keys
- "New SSH key" ํด๋ฆญ
- ๊ณต๊ฐ ํค ๋ด์ฉ ๋ถ์ฌ๋ฃ๊ธฐ
- "Add SSH key" ํด๋ฆญ
์ฐ๊ฒฐ ํ ์คํธ¶
ssh -T git@github.com
# ์ฑ๊ณต ์ ์ถ๋ ฅ:
# Hi username! You've successfully authenticated...
3. ์๊ฒฉ ์ ์ฅ์ ์ฐ๊ฒฐ¶
์ ์ ์ฅ์๋ฅผ GitHub์ ์ฌ๋ฆฌ๊ธฐ¶
# 1. GitHub์์ ์ ์ ์ฅ์ ์์ฑ (๋น ์ ์ฅ์๋ก)
# 2. ๋ก์ปฌ์์ ์๊ฒฉ ์ ์ฅ์ ์ถ๊ฐ
git remote add origin git@github.com:username/repository.git
# 3. ์ฒซ ๋ฒ์งธ ํธ์
git push -u origin main
๊ธฐ์กด GitHub ์ ์ฅ์ ๋ณต์ ¶
# SSH ๋ฐฉ์ (๊ถ์ฅ)
git clone git@github.com:username/repository.git
# HTTPS ๋ฐฉ์
git clone https://github.com/username/repository.git
# ํน์ ํด๋๋ช
์ผ๋ก ๋ณต์
git clone git@github.com:username/repository.git my-folder
4. ์๊ฒฉ ์ ์ฅ์ ๊ด๋ฆฌ¶
์๊ฒฉ ์ ์ฅ์ ํ์ธ¶
# ์๊ฒฉ ์ ์ฅ์ ๋ชฉ๋ก
git remote
# ์์ธ ์ ๋ณด
git remote -v
์ถ๋ ฅ ์์:
origin git@github.com:username/repo.git (fetch)
origin git@github.com:username/repo.git (push)
์๊ฒฉ ์ ์ฅ์ ์ถ๊ฐ/์ญ์ ¶
# ์ถ๊ฐ
git remote add origin URL
# ์ญ์
git remote remove origin
# URL ๋ณ๊ฒฝ
git remote set-url origin ์URL
5. Push - ๋ก์ปฌ โ ์๊ฒฉ¶
๋ก์ปฌ ๋ณ๊ฒฝ ์ฌํญ์ ์๊ฒฉ ์ ์ฅ์์ ์ ๋ก๋ํฉ๋๋ค.
# ๊ธฐ๋ณธ ํธ์
git push origin ๋ธ๋์น๋ช
# main ๋ธ๋์น ํธ์
git push origin main
# ์ฒซ ํธ์ ์ -u ์ต์
(upstream ์ค์ )
git push -u origin main
# upstream ์ค์ ํ์๋ ๊ฐ๋จํ
git push
ํธ์ ํ๋ฆ๋¶
๋ก์ปฌ ์๊ฒฉ (GitHub)
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ
โ Working Dir โ โ โ
โ โ โ โ โ
โ Staging โ git push โ Remote โ
โ โ โ โโโโโโโโโโโโโโโโถ โ Repository โ
โ Local Repo โ โ โ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ
6. Pull - ์๊ฒฉ โ ๋ก์ปฌ¶
์๊ฒฉ ์ ์ฅ์์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ก์ปฌ๋ก ๊ฐ์ ธ์ต๋๋ค.
# ์๊ฒฉ ๋ณ๊ฒฝ ์ฌํญ ๊ฐ์ ธ์ค๊ธฐ + ๋ณํฉ
git pull origin main
# upstream ์ค์ ๋์ด ์์ผ๋ฉด
git pull
Fetch vs Pull¶
| ๋ช ๋ น์ด | ๋์ |
|---|---|
git fetch |
์๊ฒฉ ๋ณ๊ฒฝ ์ฌํญ ๋ค์ด๋ก๋๋ง |
git pull |
fetch + merge (๋ค์ด๋ก๋ + ๋ณํฉ) |
# fetch ํ ํ์ธํ๊ณ ๋ณํฉ
git fetch origin
git log origin/main # ์๊ฒฉ ๋ณ๊ฒฝ ํ์ธ
git merge origin/main
# ํ ๋ฒ์ ์ฒ๋ฆฌ
git pull origin main
7. ์๊ฒฉ ๋ธ๋์น ์์ ¶
์๊ฒฉ ๋ธ๋์น ํ์ธ¶
# ๋ชจ๋ ๋ธ๋์น (๋ก์ปฌ + ์๊ฒฉ)
git branch -a
# ์๊ฒฉ ๋ธ๋์น๋ง
git branch -r
์๊ฒฉ ๋ธ๋์น ๊ฐ์ ธ์ค๊ธฐ¶
# ์๊ฒฉ ๋ธ๋์น๋ฅผ ๋ก์ปฌ๋ก ๊ฐ์ ธ์ค๊ธฐ
git switch -c feature origin/feature
# ๋๋
git checkout -t origin/feature
์๊ฒฉ ๋ธ๋์น ์ญ์ ¶
# ์๊ฒฉ ๋ธ๋์น ์ญ์
git push origin --delete ๋ธ๋์น๋ช
8. ์ค์ต ์์ : ์ ์ฒด ์ํฌํ๋ก์ฐ¶
GitHub์ ์ ํ๋ก์ ํธ ์ฌ๋ฆฌ๊ธฐ¶
# 1. ๋ก์ปฌ์์ ํ๋ก์ ํธ ์์ฑ
mkdir my-github-project
cd my-github-project
git init
# 2. ํ์ผ ์์ฑ ๋ฐ ์ปค๋ฐ
echo "# My GitHub Project" > README.md
echo "node_modules/" > .gitignore
git add .
git commit -m "initial commit"
# 3. GitHub์์ ์ ์ ์ฅ์ ์์ฑ (์น์์)
# - New repository ํด๋ฆญ
# - ์ด๋ฆ ์
๋ ฅ: my-github-project
# - ๋น ์ ์ฅ์๋ก ์์ฑ (README ์ฒดํฌ ํด์ )
# 4. ์๊ฒฉ ์ ์ฅ์ ์ฐ๊ฒฐ ๋ฐ ํธ์
git remote add origin git@github.com:username/my-github-project.git
git push -u origin main
# 5. GitHub์์ ํ์ธ!
ํ์ ์๋๋ฆฌ์ค¶
# ํ์ A: ๋ณ๊ฒฝ ํ ํธ์
echo "Feature A" >> features.txt
git add .
git commit -m "feat: Feature A ์ถ๊ฐ"
git push
# ํ์ B: ์ต์ ์ฝ๋ ๋ฐ๊ธฐ
git pull
# ํ์ B: ์์ ์ ๋ณ๊ฒฝ ์ฌํญ ์ถ๊ฐ
echo "Feature B" >> features.txt
git add .
git commit -m "feat: Feature B ์ถ๊ฐ"
git push
์ถฉ๋ ๋ฐ์ ์¶
# ํธ์ ์๋ - ๊ฑฐ๋ถ๋จ
git push
# ์ถ๋ ฅ: rejected... fetch first
# ํด๊ฒฐ: pull ๋จผ์
git pull
# ์ถฉ๋ ์์ผ๋ฉด ํด๊ฒฐ ํ
git add .
git commit -m "merge: ์ถฉ๋ ํด๊ฒฐ"
git push
๋ช ๋ น์ด ์์ฝ¶
| ๋ช ๋ น์ด | ์ค๋ช |
|---|---|
git remote -v |
์๊ฒฉ ์ ์ฅ์ ํ์ธ |
git remote add origin URL |
์๊ฒฉ ์ ์ฅ์ ์ถ๊ฐ |
git clone URL |
์ ์ฅ์ ๋ณต์ |
git push origin ๋ธ๋์น |
๋ก์ปฌ โ ์๊ฒฉ |
git push -u origin ๋ธ๋์น |
ํธ์ + upstream ์ค์ |
git pull |
์๊ฒฉ โ ๋ก์ปฌ (fetch + merge) |
git fetch |
์๊ฒฉ ๋ณ๊ฒฝ ๋ค์ด๋ก๋๋ง |
๋ค์ ๋จ๊ณ¶
05_GitHub_Collaboration.md์์ Fork, Pull Request, Issues๋ฅผ ํ์ฉํ ํ์ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋ด ์๋ค!