Git collaboration

Shared Repository Model

  1. 초기 μ„ΈνŒ…

  • 쀑앙 μ €μž₯μ†Œ: GitHub, GitLab, Bitbucket λ“±μ—μ„œ 곡동 μž‘μ—…ν•  원격 μ €μž₯μ†Œ(remote repository)λ₯Ό λ§Œλ“ λ‹€

  • μ΄ˆκΈ°ν™”: 각 νŒ€μ›(A, B, C)이 원격 μ €μž₯μ†Œλ₯Ό 클둠(clone)ν•΄μ„œ 둜컬 μ €μž₯μ†Œλ₯Ό μ€€λΉ„ν•œλ‹€

git clone <repository_url>

  1. 각자 μž‘μ—… λΆ„λ‹΄

  • Branch μ‚¬μš©: 각 νŒ€μ›μ€ μžμ‹ μ˜ μž‘μ—…μ„ μœ„ν•΄ μƒˆ branch λ₯Ό μƒμ„±ν•œλ‹€

git switch -c {branch name}
  • μ½”λ“œ μž‘μ„±: 각자 μžμ‹ μ΄ 맑은 κΈ°λŠ₯μ΄λ‚˜ 버그 μˆ˜μ • μž‘μ—…μ„ μ§„ν–‰ν•˜κ³ , λ³€κ²½ λ‚΄μš©μ„ commitν•œλ‹€

git add .
git commit -m "Add login feature"

  1. μž‘μ—… 병합(Pull Request λ˜λŠ” Merge Request)

  • μž‘μ—…μ΄ λλ‚œ νŒ€μ›μ€ μžμ‹ μ˜ 브랜치λ₯Ό 원격 μ €μž₯μ†Œλ‘œ pushν•œλ‹€

git push origin {branch name}
  • Pull Request(PR) 생성: GitHubμ΄λ‚˜ GitLabμ—μ„œ PR을 λ§Œλ“€μ–΄ μ½”λ“œ 리뷰λ₯Ό μš”μ²­ν•œλ‹€


  1. μ½”λ“œ 리뷰와 병합

    • 리뷰: λ‚˜λ¨Έμ§€ νŒ€μ›λ“€μ΄ PR을 κ²€ν† ν•˜κ³ , μ˜κ²¬μ„ μ œμ‹œν•˜κ±°λ‚˜ μˆ˜μ •μ„ μš”μ²­ν•  수 μžˆλ‹€

    • Merge: 리뷰가 μ™„λ£Œλ˜λ©΄, 브랜치λ₯Ό 메인 브랜치(main/master)에 λ³‘ν•©ν•œλ‹€

git checkout main
git merge feature/<μž‘μ—…_λ‚΄μš©>
git push origin main

  1. Conflict (ν•„μš” μ‹œ)

  • λ§Œμ•½ A와 Bκ°€ 같은 νŒŒμΌμ„ μˆ˜μ •ν–ˆλ‹€λ©΄ Merge Conflictκ°€ λ°œμƒν•  수 μžˆλ‹€. μ΄λ•Œ, 좩돌(conflict)을 ν•΄κ²°ν•˜κ³  λ‹€μ‹œ λ³‘ν•©ν•œλ‹€

conflict λ°œμƒν•œ 경우 λ¨Έμ§€ν•  브랜치(main) μ½”λ“œ κ°€μ Έμ˜€κΈ°
git checkout {branch name} # 이미 ν•΄λ‹Ή λΈŒλžœμΉ˜μ— 있으면 μž…λ ₯ μ•ˆν•΄λ„ 상관 μ—†μŒ
git pull origin main # main or master 
  • conflict λ°œμƒν•œ λΆ€λΆ„ μ½”λ“œ μˆ˜μ •

git add .
git commit -m ""
git push

  1. 주기적인 동기화

  • λͺ¨λ“  νŒ€μ›μ€ 메인 브랜치의 μ΅œμ‹  μƒνƒœλ₯Ό 주기적으둜 pull ν•΄μ„œ μž‘μ—…ν•œλ‹€

git pull origin main

Last updated