ํ์ ํ ๋ Git๊ณผ GitHub ์ฌ์ฉ ๋ฐฉ๋ฒ
1. Git๊ณผ GitHub๋?
Git์ ๋ถ์ฐ ๋ฒ์ ๊ด๋ฆฌ ์์คํ (VCS)์ผ๋ก, ์์ค ์ฝ๋์ ๋ณ๊ฒฝ ์ด๋ ฅ์ ๊ด๋ฆฌํ๊ณ ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ํ์ ํ ์ ์๋๋ก ๋์์ค๋ค.
GitHub๋ Git ์ ์ฅ์๋ฅผ ์จ๋ผ์ธ์์ ๊ด๋ฆฌํ ์ ์๋ ์๋น์ค๋ก, ์ฝ๋ ๊ณต์ , ํ์ , ์ด์ ๊ด๋ฆฌ ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
โ Git vs GitHub ๋น๊ต
ํญ๋ชฉ | Git | GitHub |
๊ฐ๋ | ๋ฒ์ ๊ด๋ฆฌ ์์คํ | Git ์ ์ฅ์๋ฅผ ๊ด๋ฆฌํ๋ ์น ์๋น์ค |
์ฌ์ฉ ๋ฒ์ | ๋ก์ปฌ(๋ด ์ปดํจํฐ) | ์๊ฒฉ(์จ๋ผ์ธ ์ ์ฅ์) |
์ฃผ์ ๊ธฐ๋ฅ | ๋ฒ์ ๊ด๋ฆฌ, ๋ธ๋์น | ์ฝ๋ ๊ณต์ , ํ์ , ์ด์ ๊ด๋ฆฌ |
์ ๊ทผ ๋ฐฉ์ | CLI(Command Line) | ์น ์ธํฐํ์ด์ค + CLI |
2. Git ๊ธฐ๋ณธ ๋ช ๋ น์ด
1๏ธโฃ Git ์ด๊ธฐํ ๋ฐ ๊ธฐ๋ณธ ์ค์
๐ ์ ์ฅ์ ์ด๊ธฐํ
git init # ํ์ฌ ๋๋ ํ ๋ฆฌ๋ฅผ Git ์ ์ฅ์๋ก ์ด๊ธฐํ
๐ ์ฌ์ฉ์ ์ ๋ณด ์ค์
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
2๏ธโฃ Git ์์ ํ๋ฆ
Git์ Working Directory → Staging Area → Repository ์์๋ก ํ์ผ์ ๊ด๋ฆฌํ๋ค.
- Working Directory: ์์ ์ค์ธ ํ์ผ์ด ์๋ ์์ญ
- Staging Area: ์ปค๋ฐ์ ์ํด ์ค๋น๋ ํ์ผ์ด ์ ์ฅ๋๋ ๊ณณ (`git add`)
- Repository: ์ปค๋ฐ๋ ํ์ผ์ด ์ ์ฅ๋๋ ๊ณณ (`git commit`)
๐ ํ์ผ ์ถ๊ฐ ๋ฐ ์ปค๋ฐํ๊ธฐ
git add . # ๋ชจ๋ ๋ณ๊ฒฝ๋ ํ์ผ์ ์คํ
์ด์ง (Staging Area)์ ์ถ๊ฐ
git commit -m "์ปค๋ฐ ๋ฉ์์ง" # ๋ณ๊ฒฝ ์ฌํญ์ ์ปค๋ฐํ์ฌ ์ ์ฅ์์ ๋ฐ์
๐ ์ํ ํ์ธ ๋ฐ ๋ก๊ทธ ์กฐํ
git status # ํ์ฌ ์ํ ํ์ธ (์ถ์ ๋์ง ์์ ํ์ผ, ๋ณ๊ฒฝ๋ ํ์ผ ๋ฑ ํ์ธ)
git log # ์ปค๋ฐ ์ด๋ ฅ ํ์ธ
๐ ๋ณ๊ฒฝ ์ฌํญ ๋น๊ต
git diff # ์์ ๋ ํ์ผ์ ๋ณ๊ฒฝ ๋ด์ฉ์ ํ์ธ
git diff --staged # ์คํ
์ด์ง๋ ํ์ผ์ ๋ณ๊ฒฝ ๋ด์ฉ ํ์ธ
3. GitHub ํ์ ๋ฐฉ๋ฒ
1๏ธโฃ ์๊ฒฉ ์ ์ฅ์ ์ฐ๊ฒฐํ๊ธฐ
๐ GitHub์ ์ ์ฅ์(repository) ์์ฑ ํ ์ฐ๊ฒฐ
git remote add origin https://github.com/username/repository.git
git branch -M main # ๊ธฐ๋ณธ ๋ธ๋์น๋ฅผ main์ผ๋ก ๋ณ๊ฒฝ
git push -u origin main # ์๊ฒฉ ์ ์ฅ์์ ์
๋ก๋
2๏ธโฃ ๋ธ๋์น ํ์ฉํ๊ธฐ (Branch)
๋ธ๋์น(Branch)๋ฅผ ํ์ฉํ๋ฉด ๋ ๋ฆฝ์ ์ผ๋ก ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ ํ, main ๋ธ๋์น์ ๋ณํฉํ ์ ์๋ค.
๐ ์ ๋ธ๋์น ์์ฑ ๋ฐ ์ด๋
git branch feature-branch # ์ ๋ธ๋์น ์์ฑ
git checkout feature-branch # ํด๋น ๋ธ๋์น๋ก ์ด๋
"""
ํํฐ๋์ด <main> ๋ธ๋์น์์ ๊ณต์ฉ ์์
ํด๋์ฉ์ผ๋ก <develop> ๋ธ๋์น๋ฅผ ๋ง๋ค๊ณ
๊ทธ ํ์ ๋ธ๋์น๋ก <feature/๋ธ๋์น๋ช
> ๋ฐ๋ก ๋ง๋ค์ด์ฃผ๋ ๊ฒ์ด ์ข๋ค๊ณ ํ์์
"""
๐ ๋๋ ํ ๋ฒ์ ๋ธ๋์น๋ฅผ ์์ฑํ๊ณ ์ด๋
git checkout -b feature-branch
๐ ๋ธ๋์น ๋ณํฉ
git checkout main # ๋ฉ์ธ ๋ธ๋์น๋ก ์ด๋
git merge feature-branch # ๊ธฐ๋ฅ ๋ธ๋์น๋ฅผ main์ ๋ณํฉ
๐ ๋ธ๋์น ์ญ์
git branch -d feature-branch # ๋ก์ปฌ ๋ธ๋์น ์ญ์
git push origin --delete feature-branch # ์๊ฒฉ ๋ธ๋์น ์ญ์
3๏ธโฃ ํ์ ์ ์ํ GitHub ์ฌ์ฉ ๋ฐฉ๋ฒ
๐ ์๊ฒฉ ์ ์ฅ์์์ ๋ณ๊ฒฝ ์ฌํญ ๊ฐ์ ธ์ค๊ธฐ (Pull & Fetch)
git fetch origin # ์๊ฒฉ ์ ์ฅ์ ๋ณ๊ฒฝ ์ฌํญ ํ์ธ (๋ก์ปฌ ๋ฐ์ X)
git pull origin main # ์ต์ ๋ณ๊ฒฝ ์ฌํญ ๊ฐ์ ธ์์ ๋ณํฉ
๐ ์ถฉ๋ ํด๊ฒฐํ๊ธฐ
- `git pull` ์คํ ์ ์ถฉ๋(conflict)์ด ๋ฐ์ํ๋ฉด, ์ถฉ๋๋ ํ์ผ์ ์๋์ผ๋ก ์์
- ์์ ํ ๋ณ๊ฒฝ ์ฌํญ์ ์คํ ์ด์ง ๋ฐ ์ปค๋ฐ
git add .
git commit -m "์ถฉ๋ ํด๊ฒฐ"
git push origin main
4๏ธโฃ GitHub ํ์ ์ํฌํ๋ก์ฐ (Fork & Pull Request)
1. ์๊ฒฉ ์ ์ฅ์(Fork) ๋ฐ ํด๋ก (Clone)
git clone https://github.com/original-owner/repository.git
2. ๋ธ๋์น ์์ฑ ํ ์ฝ๋ ์์
git checkout -b new-feature
# ์ฝ๋ ์์ ํ...
git add .
git commit -m "์ ๊ธฐ๋ฅ ์ถ๊ฐ"
3. GitHub์ Push & Pull Request(PR) ์์ฑ
git push origin new-feature
4. ์ฝ๋ ๋ฆฌ๋ทฐ ํ Merge ์งํ
- GitHub์์ Pull Request(PR)๋ฅผ ์์ฑํ๊ณ ๋ฆฌ๋ทฐ ์์ฒญ
- ์ฝ๋ ๊ฒํ ํ `Merge` ์งํ
4. Git ํ์ ์ ์ ์ฉํ ๋ช ๋ น์ด
๐ ๋ง์ง๋ง ์ปค๋ฐ ์์ ํ๊ธฐ
git commit --amend -m "์๋ก์ด ๋ฉ์์ง"
๐ ํน์ ์ปค๋ฐ ๋๋๋ฆฌ๊ธฐ
git reset --hard <commit-hash> # ํน์ ์ปค๋ฐ์ผ๋ก ๋๋๋ฆผ
git revert <commit-hash> # ํน์ ์ปค๋ฐ์ ์ทจ์ํ๋ ์๋ก์ด ์ปค๋ฐ ์์ฑ
๐ Git Stash ์ฌ์ฉ (์์ ์ ์ฅ)
git stash # ํ์ฌ ๋ณ๊ฒฝ์ฌํญ์ ์์ ์ ์ฅ
git stash pop # ์์ ์ ์ฅ๋ ๋ณ๊ฒฝ์ฌํญ ์ ์ฉ
GIT&GITHUB ์ ๋ฆฌ:
1. Git์ ๋ก์ปฌ์์ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์ํํ๋ฉฐ, GitHub์ ํ์ ์ ์ํ ์๊ฒฉ ์ ์ฅ์์ด๋ค~
2. `git add → git commit → git push` ์์๋ก ๋ณ๊ฒฝ ์ฌํญ์ ๊ด๋ฆฌํ๋ค~
3. ๋ธ๋์น๋ฅผ ํ์ฉํ๋ฉด ๋ ๋ฆฝ์ ์ธ ์์ ์ด ๊ฐ๋ฅํ๋ฉฐ, Merge๋ก ํตํฉํ ์ ์๋ค~
4. GitHub์ Fork & Pull Request๋ฅผ ์ฌ์ฉํ๋ฉด ์คํ์์ค ํ์ ๋ ๊ฐ๋ฅํ๋ค~
5. ์ถฉ๋ ๋ฐ์ ์ `git pull` ํ ์์ ํ์ฌ ๋ค์ ํธ์ํ๋ค~
'Tool โ๏ธ > git ๐ฑ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[241218] git branch ์ merge (3) | 2024.12.18 |
---|---|
[241213] ๊น๊ณผ ๊นํ๋ธ ์ฐ๋์ํค๊ธฐ (3) | 2024.12.13 |
[241211] git ๋ช ๋ น์ด์ ๊ฐ๋ ํน๊ฐ ๋ด์ฉ ์ ๋ฆฌ (1) | 2024.12.11 |
[241206] MarkDown .md ํ์ผ ์์ฑํ๋ ๋ฒ (2) | 2024.12.06 |