Upstage AI Lab 5기

Fork를 활용한 Git 작업 절차

Shining Future 2024. 10. 28. 23:26

"Git은 이번 생에 처음이라..."

Fork를 활용한 전형적인 Git 작업 절차를 단계별로 정리해 보았습니다.
Fork → Clone → 작업 브랜치 생성 → 커밋 및 푸시 → PR 생성 → 리뷰 및 수정 → 병합
이러한 절차는 원본 리포지토리와 독립적으로 작업할 수 있게 해 주며, 변경 사항을 검토한 후 원본에 반영(Pull Request)할 수 있는 체계적인 방식입니다. 

GitHub에서 Fork를 사용한 Git 작업 절차

1. GitHub에서 리포지토리 Fork

원본 리포지토리(Fork 대상)에 기여하고자 할 때, Fork를 통해 자신의 GitHub 계정에 복사본을 생성합니다.

이렇게 복사된 리포지토리는 원본과 독립된 공간에서 작업할 수 있어, 실수로 원본을 수정할 위험이 없습니다.

2. 로컬 컴퓨터에 리포지토리 복제 (clone)

Fork한 리포지토리를 로컬 컴퓨터에 복제하여 작업을 시작합니다.
이때 origin은 본인의 Fork 리포지토리를, upstream은 원본 리포지토리를 가리킵니다.
    git clone https://github.com/username/repository-name.git
    cd repository-name

3. Upstream 설정

원본 리포지토리의 변경 사항을 쉽게 가져올 수 있도록 upstream을 설정합니다.
이를 통해 원본에 있는 최신 업데이트를 통합할 수 있습니다.
    git remote add upstream https://github.com/upstream-username/repository-name.git
origin: 내 Fork 리포지토리
upstream: 원본 리포지토리

 

4. 새로운 브랜치 생성 및 체크아웃

Fork한 리포지토리의 기본 브랜치(일반적으로 main 또는 master)에서 작업하지 않고, 새로운 브랜치를 생성하여 개발, 버그 수정 등의 작업을 진행합니다.
    git checkout -b feature-branch-name
브랜치 이름 지정: 작업 내용을 명확히 나타내는 이름으로 지정하는 것이 좋습니다. 

예를 들어, feature-new-login 또는 bugfix-issue-123.

 

5. 코드 작성 및 변경 사항 커밋

새로운 브랜치에서 작업을 진행하고, 변경 사항을 커밋합니다.
커밋 메시지는 작업 내용을 간결하게 설명해야 하며, 팀이 이해하기 쉽게 작성합니다.
    git add .  # 변경된 파일 추가
    git commit -m "Add feature description"  # 커밋

 

6. Fork한 리포지토리(Forked Repository)에 브랜치 푸시

작업이 완료되면 origin(Forked Repository)에 브랜치를 푸시합니다.
이때 푸시된 브랜치는 GitHub에서 Pull Request(PR)를 생성하는 기반이 됩니다.
    git push origin feature-branch-name

 

7. 원본 리포지토리에 Pull Request(PR) 생성

GitHub에서 Fork한 리포지토리로 이동하여 원본 리포지토리(upstream)로의 Pull Request(PR)를 생성합니다.
PR 작성 시 변경 내용을 간결하게 설명하고, 필요한 경우 스크린샷, 코드 샘플을 추가해 리뷰어가 쉽게 이해하도록 돕습니다.
리뷰어는 프로젝트 관리자나 팀원으로, PR에 대해 승인 또는 추가 피드백을 제공할 수 있습니다.

 

8. 코드 리뷰 및 수정

PR에 대한 피드백이 있으면 로컬에서 필요한 수정을 하고 origin에 다시 푸시하여 PR을 업데이트합니다.
이 경우 PR은 자동으로 최신 상태로 갱신됩니다.
    git add .
    git commit -m "Fix review issues"
    git push origin feature-branch-name

 

9. Pull Request 병합 및 브랜치 정리

원본 리포지토리 관리자가 PR을 검토한 후 병합(Merge)하면, 기여 내용이 원본의 main 브랜치에 반영됩니다.
병합이 완료되면, 로컬과 Fork한 리포지토리에서 작업이 완료된 브랜치를 삭제하여 정리합니다.
    git checkout main  # main 브랜치로 이동
    git branch -d feature-branch-name  # 로컬 브랜치 삭제
    git push origin --delete feature-branch-name  # 원격 브랜치 삭제

 

10. 원본 리포지토리(upstream)와 Fork한 리포지토리 동기화

원본 리포지토리에서 새로운 변경 사항이 발생했을 때, 로컬과 Fork 리포지토리에 반영하여 최신 상태로 유지합니다.
원본 리포지토리(upstream)의 main 브랜치에 새로운 업데이트가 발생했다면, 이를 로컬과 origin(Fork) 리포지토리로 병합할 수 있습니다.
    git fetch upstream  # upstream에서 변경 사항 가져오기
    git checkout main  # main 브랜치로 이동
    git merge upstream/main  # 원본 리포지토리의 변경 사항 병합
    git push origin main  # Fork 리포지토리의 main 브랜치 업데이트