κΉƒ κ²½ν—˜λ‹΄

20년도 2ν•™κΈ° Cν”„λ‘œκ·Έλž˜λ°μ—μ„œ 처음으둜 κΉƒν—ˆλΈŒλ₯Ό μ‚¬μš©ν–ˆμ—ˆλ‹€. λ‹Ήμ‹œμ—λŠ” git에 λŒ€ν•΄μ„œ κ³΅λΆ€ν•˜κ³  ν˜‘μ—…μ„ μœ„ν•΄ μ‚¬μš©ν•œ 것이 μ•„λ‹Œ, μ œλŒ€λ‘œ μ‚¬μš©ν•˜κΈ° λ³΄λ‹€λŠ” 가산점 λ•Œλ¬Έμ— μ‚¬μš©ν•œ λŠλ‚Œμ΄ κ°•ν–ˆλ‹€. 볡학을 ν•˜κ³ , 23년도 2ν•™κΈ° μžλ°”ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 두 번재둜 κΉƒν—ˆλΈŒλ₯Ό μ‚¬μš©ν–ˆκ³ , μ΄λ•ŒλŠ” ν›Œλ₯­ν•œ νŒ€μ›λΆ„ 덕뢄에 브랜치, PR λ“± λ§Žμ€ 것을 κ²½ν—˜ν–ˆλ‹€. νŒ€μ›μ΄ μ•Œλ €μ€€ κΈ°λŠ₯만 μ‚¬μš©ν–ˆμ—ˆκΈ° λ•Œλ¬Έμ—, 슀슀둜 ν•™μŠ΅μ΄ ν•„μš”ν•˜λ‹€κ³  생각이 λ“€μ—ˆκ³ , 동계 λ°©ν•™λ™μ•ˆ κ°•μ˜λ₯Ό 톡해 깃에 λŒ€ν•œ ν•™μŠ΅μ„ μ§„ν–‰ν–ˆλ‹€. λ˜ν•œ, 동아리 ꡐ윑 과정을 톡해 깃을 ν•™μŠ΅ν•˜κ³  μ‚¬μš©ν•΄λ³΄λŠ” 기회λ₯Ό κ°€μ‘Œκ³ , μ΄λ ‡κ²Œ ν•™μŠ΅ν•œ λ‚΄μš©μ„ μ •λ¦¬ν•˜κ³ μž μž‘μ„±ν•˜κ²Œ 됐닀.

GIT

μ •μ˜

  • λΆ„μ‚° 버전 관리 μ‹œμŠ€ν…œμœΌλ‘œ, 파일의 버전을 관리할 수 μžˆλŠ” μˆ˜λ‹¨μ΄λ‹€.
  • 이λ₯Ό 톡해 파일의 λ³€κ²½μ‚¬ν•˜μ„ μΆ”μ ν•˜κ³  μ—¬λŸ¬λͺ…μ˜ μ‚¬μš©μžλ“€ 간에 νŒŒμΌμ— λŒ€ν•œ μž‘μ—…μ„ μ‘°μš©ν•˜λŠ”λ° μ‚¬μš©λœλ‹€.

μž₯점

  • Git을 μ‚¬μš©ν•˜λ©΄ 손 μ‰½κ²Œ λŒμ•„κ°€κ³  싢은 λ²„μ „μœΌλ‘œ λŒμ•„κ°ˆ 수 μžˆλ‹€.
  • ν˜‘μ—… κ³Όμ •μ—μ„œ λ‹€λ₯Έ κ°œλ°œμžλ“€μ˜ μ½”λ“œ 이λ ₯을 μ‰½κ²Œ 확인할 수 μžˆλ‹€.
  • λ˜ν•œ, λ³„λ„μ˜ μ œμ•½ 없이 μ—¬λŸ¬ μ‚¬λžŒμ΄ 같은 νŒŒμΌμ„ λ™μ‹œμ— μž‘μ—…ν•  수 μžˆλ‹€.

μš©μ–΄

  • 리포지토리
    • μ†ŒμŠ€ μ½”λ“œ, 파일, 디렉토리 λ“±μ˜ 버전 관리λ₯Ό μœ„ν•΄ μ‚¬μš©λ˜λŠ” μ €μž₯μ†Œμ΄λ‹€.
  • 둜컬
    • μ‚¬μš©μžμ˜ ν˜„μž¬ 컴퓨터에 μ €μž₯된 리포지토리이닀.
  • 리λͺ¨νŠΈ
    • 원격 μ„œλ²„λ‚˜ ν΄λΌμš°λ“œμ— μ €μž₯된 리포지토리이닀.
    • 둜컬 리포지토리와 동기화할 수 μžˆλ‹€.
  • 브랜치
    • ν”„λ‘œμ νŠΈμ˜ νŠΉμ • μ‹œμ μ—μ„œ λΆ„κΈ°λœ 독립적인 μž‘μ—… 곡간이닀.
    • μ—¬λŸ¬ 브랜치λ₯Ό λ§Œλ“€μ–΄ λ‹€μ–‘ν•œ κΈ°λŠ₯μ΄λ‚˜ 버그 μˆ˜μ •μ„ λ™μ‹œμ— μ§„ν–‰ν•  수 μžˆλ‹€.
  • 컀밋
    • μ»€λ°‹ν•˜κΈ° 전에 λ³€κ²½λœ νŒŒμΌμ„ μž„μ‹œλ‘œ μ €μž₯ν•˜λŠ” μ˜μ—­μ΄λ‹€.
    • μŠ€ν…Œμ΄μ§• μ˜μ—­μ— μΆ”κ°€λœ 파일만 컀밋에 ν¬ν•¨λœλ‹€.
  • μŠ€ν…Œμ΄μ§•
    • 컀밋 ν•˜κΈ° μ „ νŒŒμΌμ„ λ³΄κ΄€ν•˜λŠ” μ˜μ—­μ΄λ‹€.
  • ν‘Έμ‹œ
    • 둜컬 λ¦¬ν¬μ§€ν† λ¦¬μ˜ λ³€κ²½ 사항을 원격 리포지토리에 μ—…λ‘œλ“œν•˜λŠ” ν–‰μœ„μ΄λ‹€.
  • ν’€
    • 원격 λ¦¬ν¬μ§€ν† λ¦¬μ˜ 변경사항을 둜컬 리포지토리에 κ°€μ Έμ˜€κ³  μžλ™μœΌλ‘œ λ³‘ν•©ν•˜λŠ” ν–‰μœ„μ΄λ‹€.
  • 페치
    • 원격 λ¦¬ν¬μ§€ν† λ¦¬μ˜ λ³€κ²½ 사항을 ν™•μΈλ§Œ ν•œλ‹€.
    • 병합은 λ³„λ„λ‘œ μˆ˜ν–‰ν•΄μ•Ό ν•œλ‹€.

GitHub

  • Git을 기반으둜 μ†ŒμŠ€ μ½”λ“œμ™€ κ΄€λ ¨ νŒŒμΌμ„ μ €μž₯ν•˜κ³  관리할 수 μžˆλŠ” μ›Ή 기반 ν˜ΈμŠ€νŒ… μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•˜λŠ” ν”Œλž«νΌμ΄λ‹€.
  • 버전 관리 κΈ°λŠ₯ 외에도 이슈 νŠΈλž˜ν‚Ή, μ½”λ“œ 리뷰 λ“±μ˜ κΈ°λŠ₯을 μ œκ³΅ν•˜μ—¬ κ°œλ°œμžλ“€μ΄ 효과적으둜 ν˜‘μ—…ν•  수 있게 ν•œλ‹€.

자주 μ‚¬μš©ν–ˆλ˜ λͺ…λ Ήμ–΄

  • git init : .git νŒŒμΌμ„ μƒμ„±ν•˜λŠ” λͺ…령어이닀.

  • git clone : 원격 λ¦¬ν¬μ§€ν† λ¦¬μ˜ λ‚΄μš©μ„ 둜컬 리포지토리에 λ³΅μ œν•˜λŠ” λͺ…령어이닀.
  • git checkout : νŠΉμ • 브랜치둜 μ΄λ™ν•˜λŠ” λͺ…령어이닀.
  • git status : ν˜„μž¬ λΈŒλžœμΉ˜μ—μ„œ λ³€κ²½ 사항이 μžˆλŠ” νŒŒμΌλ“€μ„ λ³΄μ—¬μ£ΌλŠ” λͺ…령어이닀.
    • Untracked μƒνƒœ : git이 μΆ”μ ν•˜μ§€ μ•ŠλŠ” μƒνƒœ, Untracked files에 λΉ¨κ°„μƒ‰μœΌλ‘œ ν‘œμ‹œ
    • Staged μƒνƒœ : Staging Area에 μžˆλŠ” μƒνƒœ, Changes to be committed에 μ΄ˆλ‘μƒ‰μœΌλ‘œ ν‘œμ‹œ
    • Modified μƒνƒœ : νŒŒμΌμ— 변경사항이 μžˆλŠ” μƒνƒœ, Changes not staged for commit에 λΉ¨κ°„μƒ‰μœΌλ‘œ ν‘œμ‹œ
  • git add : Modified μƒνƒœμ˜ νŒŒμΌμ„ μŠ€ν…Œμ΄μ§• μ˜μ—­μ— μ˜¬λ¦¬λŠ” λͺ…령어이닀.
  • git commit : 컀밋을 μˆ˜ν–‰ν•˜λŠ” λͺ…령어이닀.
  • git push : ν‘Έμ‹œλ₯Ό μˆ˜ν–‰ν•˜λŠ” λͺ…령어이닀.
  • git fetch : 페치λ₯Ό μˆ˜ν–‰ν•˜λŠ” λͺ…령어이닀.
  • git pull : 풀을 μˆ˜ν–‰ν•˜λŠ” λͺ…령어이닀.

마무리

μš”μ¦˜μ€ IDEμ—μ„œ μ œκ³΅ν•΄μ£ΌλŠ” GIT GUI(?) 같은 걸둜 νŽΈν•˜κ²Œ ν•˜κΈ° λ•Œλ¬Έμ— λͺ…λ Ήμ–΄λŠ” 잘 μ‚¬μš©ν•˜κ³  μžˆμ§€ μ•Šμ€ 것 κ°™λ‹€. ν•˜μ§€λ§Œ λͺ¨λ“  것이 κ·ΈλŸ¬λ“― 기본이 μ€‘μš”ν•˜λ‹€. IDEμ—μ„œ μ œκ³΅ν•΄μ£ΌλŠ” κ²ƒλ§ŒμœΌλ‘œλ„ 해결이 μ•ˆλ˜λŠ” 것이 μ‘΄μž¬ν•  수 있기 λ•Œλ¬Έμ— κΈ°νšŒκ°€ λœλ‹€λ©΄ λͺ…령어도 자주 μ‚¬μš©ν•΄λ³΄λŠ” 것이 μ’‹κ² λ‹€κ³  생각이 λ“€μ—ˆλ‹€. λ˜ν•œ, μ’€ 있으면 회고 ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λŠ”λ° Git Workflow도 ν•œ 번 ν•™μŠ΅ν•˜κ³  μ μš©ν•΄λ³΄λ©΄ μ’‹κ² λ‹€λŠ” 생각이 λ“€μ—ˆλ‹€.