๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Project ESG+AI/[์‚ผ์ •KPMG]ESG ๋ฐ์ดํ„ฐ ํ™œ์šฉ ํ’€์Šคํ… ๊ฐœ๋ฐœ

31์ผ์ฐจ. ๊นƒ ๋ธŒ๋žœ์น˜ ๋งŒ๋“ค๊ธฐ

by GreenJin_S2 2025. 11. 20.

 

 

 

 

 

 

 

 

 

์˜ค๋Š˜์€ ๊นƒํ—ˆ๋ธŒ์—์„œ ๋ธŒ๋žœ์น˜๋ฅผ ๋‚˜๋ˆ„๊ณ  ์˜ฌ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค.

๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋Š” ์–ด๋–ป๊ฒŒ ํ• ์ง€์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•ด๋ณด๊ณ  ๊นƒํ—ˆ๋ธŒ์— ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ๋„ ๋งŒ๋“ค์–ด๋ณด์•˜๋‹ค//

์ค€๋น„๋ฌผ (์ง€๊ธˆ ๋‹น์žฅ ํ•„์š”ํ•œ ๊ฒƒ 2๊ฐœ)

  1. ๊นƒํ—ˆ๋ธŒ ๊ณ„์ • (๋กœ๊ทธ์ธ๋ผ ์žˆ์–ด์•ผ ํ•จ)
  2. ์ปดํ“จํ„ฐ์— Git ์„ค์น˜๋ผ ์žˆ์–ด์•ผ ํ•จ → ์•ˆ ๋ผ ์žˆ์œผ๋ฉด ์—ฌ๊ธฐ์„œ 1๋ถ„ ์„ค์น˜: https://git-scm.com/downloads

1๋‹จ๊ณ„: ์ƒˆ ๋ ˆํฌ ๋งŒ๋“ค๊ธฐ (๊นƒํ—ˆ๋ธŒ ์›น์—์„œ 1๋ถ„)

  1. https://github.com/new ์ ‘์†
  2. ์•„๋ž˜์ฒ˜๋Ÿผ ์ž…๋ ฅ ํ›„ Create repository ํด๋ฆญ
 
ํ•ญ๋ชฉ์ž…๋ ฅํ•  ๋‚ด์šฉ
Repository name lca-calculator (๋˜๋Š” ์›ํ•˜๋Š” ์ด๋ฆ„)
Description ์ƒ์• ์ฃผ๊ธฐ ํ‰๊ฐ€(LCA) ๊ณ„์‚ฐ๊ธฐ ํ”„๋กœ์ ํŠธ
Public / Private Public (ํฌํŠธํด๋ฆฌ์˜ค๋ฉด ๋ฌด์กฐ๊ฑด Public!)
Add a README file ์ฒดํฌ ํ•ด์ œ
Add .gitignore ์ฒดํฌ ํ•ด์ œ
Choose a license MIT License (์ถ”์ฒœ)

→ ์ดˆ๋ก์ƒ‰ Create repository ๋ฒ„ํŠผ ํด๋ฆญ!

2๋‹จ๊ณ„: ๋กœ์ปฌ์— ํด๋ก  + develop ๋ธŒ๋žœ์น˜ ๋งŒ๋“ค๊ธฐ (ํ„ฐ๋ฏธ๋„์—์„œ 2๋ถ„)

ํ„ฐ๋ฏธ๋„(๋งฅ์€ Terminal, ์œˆ๋„์šฐ๋Š” Git Bash๋‚˜ PowerShell) ์—ด๊ณ  ์•„๋ž˜ ์ˆœ์„œ๋Œ€๋กœ ๋ณต๋ถ™!

Bash
 
# 1. ๋ฐ”ํƒ•ํ™”๋ฉด์ด๋‚˜ ์›ํ•˜๋Š” ํด๋”๋กœ ์ด๋™
cd ~/Desktop        # ๋งฅ/๋ฆฌ๋ˆ…์Šค
# cd C:\Users\๋„ˆ์ด๋ฆ„\Desktop   # ์œˆ๋„์šฐ

# 2. ๋ฐฉ๊ธˆ ๋งŒ๋“  ๋ ˆํฌ ํด๋ก 
git clone https://github.com/๋„ˆ์•„์ด๋””/lca-calculator.git
cd lca-calculator

# 3. develop ๋ธŒ๋žœ์น˜ ๋งŒ๋“ค๊ณ  ๋ฐ”๋กœ ํ‘ธ์‹œ (์ด์ œ๋ถ€ํ„ฐ ์—ฌ๊ธฐ์„œ ๊ฐœ๋ฐœ!)
git checkout -b develop
git push -u origin develop

3๋‹จ๊ณ„: main ๋ธŒ๋žœ์น˜ ๋ณดํ˜ธ ์„ค์ • (๊นƒํ—ˆ๋ธŒ ์›น์—์„œ 2๋ถ„)

  1. ๊นƒํ—ˆ๋ธŒ ๋ ˆํฌ๋กœ ๋“ค์–ด๊ฐ€๊ธฐ → Settings ํƒญ ํด๋ฆญ
  2. ์™ผ์ชฝ ๋ฉ”๋‰ด Branches ํด๋ฆญ
  3. Add rule ๋ฒ„ํŠผ ํด๋ฆญ
  4. ์•„๋ž˜์ฒ˜๋Ÿผ ์ž…๋ ฅ ํ›„ ์ดˆ๋ก์ƒ‰ Add rule ํด๋ฆญ
 
ํ•ญ๋ชฉ์„ค์ •๊ฐ’
Branch name pattern main
Require a pull request... ์ฒดํฌ
Require approvals 1 (ํ˜ผ์ž๋ฉด 1๋กœ ํ•ด๋„ ๋จ)
Dismiss stale approvals... ์ฒดํฌ
Require status checks... ์ฒดํฌ ํ•ด์ œ (๋‚˜์ค‘์— CI ๋„ฃ์„ ๋•Œ ์ผœ๊ธฐ)
Require linear history ์ฒดํฌ (๊ฐ•๋ ฅ ์ถ”์ฒœ! ์ถฉ๋Œ ๊ฑฐ์˜ ์—†์–ด์ง)
Include administrators ์ฒดํฌ

→ ์ด์ œ main์€ PR ์—†์œผ๋ฉด ์ ˆ๋Œ€ ๋ชป ๊ฑด๋“œ๋ฆผ!

4๋‹จ๊ณ„: .github ํด๋” + ์ž๋™ํ™” ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ (๋ณต๋ถ™๋งŒ ํ•˜๋ฉด ๋จ)

ํ„ฐ๋ฏธ๋„์—์„œ ๊ทธ๋Œ€๋กœ ๋ณต๋ถ™!

Bash
 
# 1. .github ํด๋” ๋งŒ๋“ค๊ธฐ
mkdir .github
mkdir .github/workflows

# 2. PR ํ…œํ”Œ๋ฆฟ ๋งŒ๋“ค๊ธฐ
cat > .github/pull_request_template.md << 'EOF'
## ์ž‘์—… ๋‚ด์šฉ
- [ ] ์ƒˆ ๊ธฐ๋Šฅ / ๋ฒ„๊ทธ ์ˆ˜์ • / ๋ฆฌํŒฉํ† ๋ง / ๋ฌธ์„œ

## ๊ด€๋ จ ์ด์Šˆ
Closes #

## ์ฒดํฌ๋ฆฌ์ŠคํŠธ
- [ ] ์ฝ”๋“œ ์ •์ƒ ๋™์ž‘ ํ™•์ธ
- [ ] develop ๋ธŒ๋žœ์น˜ ์ตœ์‹ ํ™”ํ•จ
- [ ] ๋ถˆํ•„์š”ํ•œ ๋กœ๊ทธ ์‚ญ์ œํ•จ
EOF

# 3. ์ž๋™ ๋ธŒ๋žœ์น˜ ์‚ญ์ œ ์›Œํฌํ”Œ๋กœ์šฐ ๋งŒ๋“ค๊ธฐ (PR ๋จธ์ง€๋˜๋ฉด ์ž๋™ ์‚ญ์ œ!)
cat > .github/workflows/auto-delete.yml << 'EOF'
name: Auto Delete Merged Branch
on:
  pull_request:
    types: [closed]

jobs:
  delete-branch:
    if: github.event.pull_request.merged == true
    runs-on: ubuntu-latest
    steps:
      - name: Delete branch
        uses: dawidd6/action-delete-branch@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          branches: ${{ github.event.pull_request.head.ref }}
EOF

5๋‹จ๊ณ„: ์ตœ๊ณ ์˜ .gitignore ๋งŒ๋“ค๊ธฐ (LCA ํ”„๋กœ์ ํŠธ์šฉ)

Bash
 
cat > .gitignore << 'EOF'
# Python / Node
__pycache__/
*.pyc
node_modules/
dist/
build/
.env
.venv
venv/

# ๋ฐ์ดํ„ฐ ํŒŒ์ผ (์šฉ๋Ÿ‰ ํฐ ๊ฑฐ ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š๊ฒŒ!)
data/*.xlsx
data/*.csv
*.xlsx
*.csv

# IDE
.vscode/
.idea/
*.swp

# OS
.DS_Store
Thumbs.db
EOF

6๋‹จ๊ณ„: README์— ๋ธŒ๋žœ์น˜ ์ „๋žต ๋„ฃ๊ธฐ (ํฌํŠธํด๋ฆฌ์˜ค์šฉ ํ•„์ˆ˜!)

Bash
 
cat > README.md << 'EOF'
# LCA Calculator

์ƒ์• ์ฃผ๊ธฐ ํ‰๊ฐ€(LCA)๋ฅผ ์‰ฝ๊ฒŒ ๊ณ„์‚ฐํ•ด์ฃผ๋Š” ์›น ์•ฑ

## ๋ธŒ๋žœ์น˜ ์ „๋žต
| ๋ธŒ๋žœ์น˜           | ์šฉ๋„                              | ๋ณดํ˜ธ | ์‚ญ์ œ ์‹œ์        |
|------------------|-----------------------------------|------|-----------------|
| `main`           | ํ•ญ์ƒ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ์™„์„ฑ๋ณธ           | ๊ฐ•๋ ฅ | ์ ˆ๋Œ€ ์‚ญ์ œ ๊ธˆ์ง€  |
| `develop`        | ํ˜„์žฌ ๊ฐœ๋ฐœ ์ค‘์ธ ์ตœ์‹  ์ฝ”๋“œ          | ๋ณดํ˜ธ | ์œ ์ง€            |
| `feature/...`    | ์ƒˆ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ                      | ์—†์Œ | ๋จธ์ง€ ํ›„ ์‚ญ์ œ    |
| `hotfix/...`     | ๊ธด๊ธ‰ ๋ฒ„๊ทธ ์ˆ˜์ •                    | ์—†์Œ | ๋จธ์ง€ ํ›„ ์‚ญ์ œ    |
| `release/vX.Y.Z` | ๋ฐฐํฌ ์ง์ „ ํ…Œ์ŠคํŠธ ๋ฐ ๋ฒ„์ „ ์ •๋ฆฌ     | ๋ณดํ˜ธ | ํƒœ๊ทธ ํ›„ ์‚ญ์ œ    |

> ๋ชจ๋“  ์ž‘์—…์€ develop → feature ๋ธŒ๋žœ์น˜์—์„œ ์‹œ์ž‘  
> ๊ธฐ๋Šฅ ์™„๋ฃŒ → develop → main ์ˆœ์œผ๋กœ ๋จธ์ง€  
> PR ๋จธ์ง€ ํ›„ ์ž๋™์œผ๋กœ ๋ธŒ๋žœ์น˜ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค
EOF

7๋‹จ๊ณ„: ์ฒซ ์ปค๋ฐ‹ํ•˜๊ณ  ํ‘ธ์‹œ (๋งˆ์ง€๋ง‰!)

Bash
 
git add .
git commit -m "chore: init project with perfect branch strategy"
git push

๋! ์ด์ œ ๋‹น์‹  ๊นƒํ—ˆ๋ธŒ ์ƒํƒœ

  • main (๋ณดํ˜ธ๋จ)
  • develop (์ง€๊ธˆ ์—ฌ๊ธฐ์„œ ๊ฐœ๋ฐœ ์‹œ์ž‘!)
  • .github ํด๋”์— PR ํ…œํ”Œ๋ฆฟ + ์ž๋™ ๋ธŒ๋žœ์น˜ ์‚ญ์ œ
  • ์ตœ๊ณ ์˜ .gitignore
  • ํฌํŠธํด๋ฆฌ์˜ค๊ธ‰ README

์ง€๊ธˆ ๋‹น์žฅ ์‹œ์ž‘ํ•  ์ฒซ feature ๋ธŒ๋žœ์น˜ ์˜ˆ์‹œ

Bash
 
git checkout develop
git checkout -b feature/lca-input-form
# ์—ฌ๊ธฐ์„œ ์ฝ”๋”ฉ ์‹œ์ž‘!!!

 

 

 


 develop ๋ธŒ๋žœ์น˜๊ฐ€ ์–ธ์ œ ํ•„์š”ํ•˜๋ƒ?
 main = ํ•ญ์ƒ ๊นจ๋—ํ•˜๊ณ  ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ๋ฒ„์ „
 develop = ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ(feature) ๋ธŒ๋žœ์น˜๋“ค์ด ํ•ฉ์ณ์ง€๋Š” ์ž‘์—… ๊ณต๊ฐ„
์ฆ‰:
  • ํŒ€์›๋“ค์€ feature ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…
  • ์ž‘์—…์ด ์–ด๋А ์ •๋„ ๋˜๋ฉด develop์œผ๋กœ merge
  • develop์—์„œ ์ „์ฒด ํ…Œ์ŠคํŠธ
  • ์•ˆ์ •ํ™”๋˜๋ฉด develop → main์œผ๋กœ merge
์ง€๊ธˆ ๋„ˆํฌ ํŒ€์ด ์—ฌ๋Ÿฌ ๋ช…์ด ๋™์‹œ์— ์ž‘์—…ํ•˜๋Š” ๊ตฌ์กฐ๋ผ์„œ
 develop ๋ธŒ๋žœ์น˜๋ฅผ ์ง€๊ธˆ ๋งŒ๋“ค์–ด๋‘๋ฉด ์ถฉ๋Œ ๊ด€๋ฆฌ๊ฐ€ ๋งค์šฐ ์‰ฌ์›Œ์ง.
 
์•ž์œผ๋กœ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ ๊ฑฐ ๊ฐ™์•„์š” develop์œผ๋กœ mergeํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•ด์„œ ๋ฉ”์ธ์œผ๋กœ ๋Œ์–ด๊ฐ€๋Š” ๊ฒƒ์œผ๋กœ
 
 

git branch

 

git switch -c feature-lucy

git add .

git commit -m "feat: ์—ฌ๊ธฐ ๋„ˆ๊ฐ€ ํ•œ ๋‚ด์šฉ ํ•œ ์ค„ ์š”์•ฝ"

git push -u origin feature-lucy

# 1. ์ƒˆ ๋ธŒ๋žœ์น˜ ๋งŒ๋“ค๊ณ  ๋ฐ”๋กœ ๊ทธ ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ (ํ˜„์žฌ main ๊ธฐ์ค€์œผ๋กœ)
git switch -c feature-brbr# 2. ๋„ˆ๊ฐ€ ์ˆ˜์ •ํ•œ ํŒŒ์ผ๋“ค ์ปค๋ฐ‹ (์ด๋ฏธ ์ปค๋ฐ‹ ์•ˆ ํ–ˆ์œผ๋ฉด)
git add .
git commit -m "feat: ์—ฌ๊ธฐ ๋„ˆ๊ฐ€ ํ•œ ๋‚ด์šฉ ํ•œ ์ค„ ์š”์•ฝ"# 3. ์›๊ฒฉ์— ์ฒ˜์Œ ํ‘ธ์‹œ + ํŠธ๋ž˜ํ‚น ์„ค์ • (์ด๊ฑฐ ์ œ์ผ ์ค‘์š”!)
git push -u origin feature-brbr