오늘의 TIL 

오늘은 조원들과 팀 프로젝트를 대비해서 깃으로 협업을 하는 연습을 했다. 그 과정을 정리했다. 


1️⃣ GIT 협업 WORKFLOW: 브랜치 생성 과정 포함

Git에서 협업할 때는 각 기능(feature)별 브랜치를 생성하고, 독립적으로 작업한 후 main(또는 develop) 브랜치에 병합하는 방식을 사용한다.

Git 협업 기본 Workflow

  1. 최신 코드 가져오기 (main 브랜치 기준)
  2. git checkout main # main 브랜치로 이동 git pull origin main # 원격 저장소에서 최신 코드 가져오기
  3. 새로운 브랜치 생성 후 이동
    • 브랜치 네이밍 규칙
      • 기능 개발: feature/기능이름
      • 버그 수정: bugfix/버그이름
      • 긴급 수정: hotfix/긴급수정내용
      • 릴리즈 브랜치: release/버전번호
  4. git checkout -b feature/기능이름 # 기능 개발을 위한 브랜치 생성 및 이동
  5. 코드 작업 후 변경 사항 커밋하기
  6. git add . # 변경된 파일 추가 git commit -m "feat: 새로운 기능 추가" # 커밋 메시지 작성
  7. 원격 저장소에 브랜치 Push
  8. git push origin feature/기능이름 # 원격 저장소에 새로운 브랜치 push
  9. PR(Pull Request) 생성 및 코드 리뷰 요청
    • GitHub, GitLab 등에서 feature/기능이름 브랜치를 main 브랜치로 병합하기 위한 PR을 생성.
    • 팀원들의 코드 리뷰 후 승인이 완료되면 main 브랜치에 병합.
  10. 브랜치 정리 (병합 완료 후)
  11. git checkout main # main 브랜치로 이동 git pull origin main # 최신 코드 가져오기 git branch -d feature/기능이름 # 로컬 브랜치 삭제 git push origin --delete feature/기능이름 # 원격 브랜치 삭제 (필요할 경우)

2️⃣ Push 했을 때 충돌이 일어나는 경우 + 해결 방법

Git에서 충돌(conflict)이 발생하는 주된 이유는 같은 파일의 같은 부분을 여러 사람이 동시에 수정했기 때문이다.

🔥 충돌이 발생하는 경우

  1. 두 명의 개발자가 같은 파일을 수정함.
  2. A 개발자가 먼저 변경 사항을 main에 Push.
  3. B 개발자가 자신의 브랜치에서 변경 작업 후 git push origin feature/기능이름 시도.
  4. 충돌 발생! (B 개발자의 로컬 브랜치가 최신 main을 반영하지 않고 작업했기 때문)

✅ 충돌 해결 방법

  1. 최신 코드 가져오기 (pull 실행 시 충돌 발생 가능)
    git pull origin main  # main 브랜치의 최신 변경 사항을 가져옴
    
  2. 충돌 해결하기
    • 충돌이 발생한 파일을 열어 충돌 부분을 직접 수정.
    • Git이 충돌을 감지하면, 해당 파일에 <<<<<<<, =======, >>>>>>> 같은 구분선이 표시됨.
    • 올바른 코드로 수정 후 저장.
  3. 충돌 해결 후 커밋
    git add .
    git commit -m "fix: 충돌 해결"
    
  4. 병합 완료 후 push
    git push origin feature/기능이름  # 충돌이 해결된 브랜치를 원격 저장소에 push
    

3️⃣ 충돌 발생 후 git pull origin main 했더니 자동으로 merge된 이유

보통 git pull origin main을 실행하면 main 브랜치의 최신 변경 사항을 가져오면서 자동으로 병합(merge) 이 된다.

✅ 자동 병합이 되는 이유

  1. 충돌이 발생했지만, Git이 자동으로 해결 가능한 경우 (ex: 서로 다른 파일을 수정했거나, 코드 변경 순서에 영향이 없는 경우).
  2. 이전에 발생한 충돌이 이미 해결된 경우.
  3. git pull을 실행할 때 --rebase 옵션이 적용되면서 자동으로 충돌이 정리됨.

✅ 자동 병합이 되지 않는 경우 해결 방법

git pull --rebase origin main  # rebase 방식으로 최신 코드 가져오기
git add .
git commit -m "fix: rebase 후 충돌 해결"
git push origin feature/기능이름  # 변경 사항 push

📌 Git 충돌이 발생하면 무조건 git pull을 하기 전에 충돌 원인을 먼저 확인하는 것이 중요하다!

+ Recent posts