git repository 에서의 협업

유예지·2025년 6월 4일

1. git repository 의 생성

2. vscode와 연동하여 작업

질문 :
팀원들과 함께 협업할 git repository 가 있어. 이 repository 의 정책은 main 을 protection 하고, branch 전략은 Squash & Merge 하는 것으로 설정되어 있어. 이 repository 에서 내가 맡은 부분의 작업을 해보려고 해. 새 branch 를 만들어 이 branch 에서 작업 후, add, commit, push 해서 PR 하는 것 까지의 과정을 하나하나 상세히 설명해줘.

gpt :
좋아! Git repository에서 협업할 때 새 브랜치를 만들고 작업 후 PR(Pull Request)까지 하는 과정을 하나하나 상세히 설명해볼게. 너는 main 브랜치가 보호(protected) 되어 있고, Squash & Merge 전략을 사용 중이라는 설정을 기준으로 설명할게.

전제

  • main 브랜치는 직접 푸시할 수 없고, PR을 통해서만 변경 가능
  • 브랜치 전략은 Squash & Merge → 여러 커밋을 하나로 합쳐서 main에 머지
  • 협업을 위한 Git repository는 이미 클론되어 있다고 가정
git clone 깃레포_주소

(1) main 최신화 및 새 브랜치 생성

  • main 브랜치로 이동 :
# git checkout main
git switch main
  • 원격 저장소의 최신 상태를 가져와 main 최신화 :
# git pull origin main
git pull
  • 새 브랜치 생성 (예: feature/login-form) :
git checkout -b branch_name
  • 브랜치 명은 보통 feature/기능명, bugfix/이슈명, hotfix/패치내용 이런 식으로 규칙을 정해서 사용

(2) 작업 및 커밋(commit)

  • 파일 수정/추가 등 기능 개발 진행
  • 작업 완료 후, 변경 사항 확인 :
# 변경 사항 확인
git status
  • 변경된 파일들을 staging (변경된 내용들을 stage 에 upload) :
# 파일 전체를 staging
git add .

# 또는 선택적으로
git add 파일명
  • 커밋 메세지 작성 :
git commit -m "작업 내용"
  • 커밋 메시지도 팀 규칙이 있다면 따라야 해! 예: feat:, fix:, refactor: 등의 prefix

(3) 원격 브랜치로 푸시(push)

# git push origin feature/login-form
git push origin branch_name

(4) GitHub(또는 GitLab 등)에서 PR 생성

  • GitHub에 접속해서 방금 푸시한 브랜치로 PR(Pull Request)을 생성
  • base는 main, compare는 feature/login-form
  • PR 제목 및 설명을 작성 (무엇을, 왜, 어떻게 했는지)
  • 리뷰어 지정 및 라벨, 프로젝트 등 설정 (필요 시)
  • Squash & Merge 전략을 따르므로 PR을 머지할 때 모든 커밋이 하나로 합쳐짐
  • main이 protected 되어 있어서, 코드 리뷰 승인 없이는 merge가 불가능할 수도 있으며, 이는 팀의 보호 정책에 따라 다름.

(5) PR 머지 후 해야 할 일

  • PR이 머지된 후엔 본인의 로컬 main 브랜치를 최신 상태로 유지해야 함 :
# git checkout main
git switch main

# git pull origin main
git pull
  • 그리고 머지가 완료된 브랜치는 삭제 :
git branch -D branch_name             # 로컬 브랜치 삭제
git push origin --delete branch_name  # 원격 브랜치 삭제

(6) main branch 의 위치 이동 (rebase)

git rebase main
  • 참고사항 : 하나의 branch 내에서 수행되는 작업들은, 일관성이 있어야 함
    • 즉, 하나의 branch 내에서는 하나의 py 파일에 대한 작업들이 있으면 좋음
    • 이는 commit, push 한 후 PR을 생성하는 과정에서, 여러 branch 의 작업이 충돌되지 않도록 하기 위함
    • 때문에, PR도, 작업마다 올리는 것이 좋음 (한꺼번에 작업 후 PR 을 올리면, 이후 수정이 번거롭고, reviewer 입장에서도 한꺼번에 확인이 버거움)

3. 이미 올린 Pull Request 수정

(1) Review 받은 내용을 반영한 후 git add

(2) git commit --amend 를 통해 최신 commit 덮어쓰기

  • 기본 에디터가 Vim일 때 키보드 조작법
  • 메시지 수정 : i 키를 눌러 입력 모드로 진입
  • 메시지 수정 후 ESC 키를 눌러 입력 모드를 빠져나옴
  • 저장 & 종료 : :wq 입력 후 Enter

(3) git push -f origin branch-name

위 a, b, c 과정을 진행하면 내가 수정한 부분이 자동으로 PR에 반영이 되므로,
번거롭게 PR을 close 하고 다시 PR을 진행하는 과정을 하지 않아도 된다.


4. .gitignore 파일 관리

(1) .gitignore 수정

  • .gitignore 파일 열어서 추가:
# 예시
*.log
.vscode
# 다른 설정이 있다면 적절한 위치에 추가

(2) 이미 커밋된 파일들 추적 해제

  • 터미널에서:
# --cached 옵션은 Git 인덱스에서는 삭제하고, 로컬 파일은 삭제하지 않음
git rm --cached *.log
git rm -r --cached .vscode

(3) 변경사항 commit & push

# add
git add .gitignore
# commit
git commit -m "fix: remove committed .log files and update .gitignore."
git commit -m "fix: remove .vscode directory from repository."
# push
git push origin branch_name

5. pytest 시 import 오류 해결

  • 터미널을 열고, root 경로에서 아래 명령어 실행
PYTHONPATH=. pytest

6. commit 시 여러 문장을 한번에 commit

방법1 : git commit 입력 후 편집기(vi)에서 작성

git commit
  • 터미널에 위 명령어를 입력하면 기본 텍스트 편집기(Vim 등)가 열린다. 여기서:
    • 첫 줄: 커밋 제목 (요약)
    • 두 번째 줄: 비워두기
    • 세 번째 줄 이후: 커밋 상세 설명 (여러 줄 가능)
  • 예:
Fix user login bug
- Fixed token expiration issue
- Added proper error handling
- Updated related tests
  • 편집 후 (ESC) 저장하고 종료(:wq)하면 커밋 완료

방법 2 : 커맨드라인에서 -m 옵션으로 여러 줄 작성

git commit -m "Update README" -m "Added usage instructions and examples."
  • 첫 번째 -m은 커밋 제목
  • 두 번째 -m부터는 본문에 들어감 (필요한 만큼 -m 추가 가능)

0개의 댓글