본문 바로가기
[ Project ]/Team

[ Team ] Git Hub - 외부저장소 동기화 하기

by 환이s 2023. 7. 4.


팀 프로젝트 종료 날이 다가오면서 중간중간에 오류 체크를 위한 전체 소스 통합을 해야 하는 하는 과정을 겪으면서 Git에 대한 지식이 부족하다고 생각했습니다..^^

 

오늘은 외부 저장소를 fork 한 뒤 pull request를 요청하는 방법을 정리하려고 합니다.

 

순서는 다음과 같습니다.

 

1. 개설한 레포지토리를 Fork 한다.

 

2. Fork 한 레포에  github ID로 폴더를 생성한다.

 

3. 생성한 폴더에 소스 코드를 업로드 한다.

 

4. 원본 저장소로 pull request 한다.

 

그렇다면 위에서 말하는 fork의 개념을 먼저 알고 진행해 봅시다.

 

Fork 란?

 

 

 

GitHub에서 fork는 다른 사람의 GitHub 저장소를 자신의 계정으로 복제하는 기능입니다.

 

복제한 후에는 해당 저장소의 모든 파일, 커밋 기록, 브랜치 등을 자유롭게 수정하고 변경할 수 있습니다. 이는 다른 사람의 프로젝트에 기여하고 싶거나, 개인적으로 수정한 버전을 유지하고 싶을 때 유용한 기능입니다.

Fork를 통해 복제한 저장소는 원본 저장소와 독립적으로 관리됩니다.

복제한 저장소에 가한 변경 사항은 원본 저장소에 영향을 주지 않으며, 원본 저장소의 변경 사항을 복제한 저장소에 자동으로 반영되지 않습니다.

 

이는 독립적인 작업 환경을 제공하므로 다른 사람의 프로젝트에 대한 변경을 자유롭게 실험하고, 원하는 대로 수정할 수 있습니다.

Fork 한 저장소에서는 새로운 브랜치를 생성하거나 기존 브랜치를 수정하여 작업할 수 있습니다. 

이후에는 자신이 수정한 내용을 커밋하고, 복제한 저장소의 원본 저장소에 변경 사항을 반영하기 위해 pull request를 생성할 수 있습니다.

 

 Pull request는 원본 저장소의 소유자에게 자신의 변경 사항을 리뷰해 달라고 요청하는 기능으로, 소유자가 이를 승인하면 변경 사항이 원본 저장소에 병합됩니다.

이러한 방식으로 Fork 기능은 개발자들 사이에서 협업과 기여를 촉진하는 데 사용되며, 오픈 소스 프로젝트의 생태계를 확장하는 데 도움을 줍니다.

 

 

그럼 외부저장소를 fork 해서 진행해 봅니다.

 

 

1. 외부저장소 fork 

 

 

 

해당 레포지토리 상단 우측에 Fork 버튼을 클릭하고 내 저장소에 Fork 해주면 아래와 같이 새 저장소가 생성됩니다.

 

 

 

2. Clone

 

 

Clone은 원격 저장소의 소스 코드와 commit history 등을 내 로컬 저장소로 그대로 가져오는 기능입니다.

 

Clone 한 로컬 저장소에서 소스 코드를 수정한 후, Commit과 Push의 과정을 거쳐 원격 저장소의 commit history를 로컬과 동일해지도록 업데이트해줍니다.

 

 

저장소를 클론 하기 위해서는 원격저장소 페이지에서 클론 주소를 복사한 뒤 Git Bash에서 아래 명령어를 입력해 주면 됩니다.

 

$ git clone [로컬 저장소 주소] [생성 폴더명]

 

 

생성 폴더명을 생략하면, 원격 저장소 이름과 동일한 폴더가 생성됩니다.

글쓴이는 차별화를 두기 위해 trakker-project로 생성했습니다.

 

 

3. 로컬 저장소에 원본 저장소 등록

 

 

먼저 아래 명령어를 입력해 로컬 저장소와 연결된 원격 저장소를 확인합니다.

 

$ git remote -v

 

 

원격 저장소를 등록하기 위해 아래 명령어를 입력해 줍니다.

보통 fork에서 원본 저장소의 이름은 upstream을 사용한다고 합니다.

 

$ git remote add upstream [원격 저장소 주소]

 

 

연결된 원격저장소 목록을 다시 확인해 보면 fork 한 내 로컬저장소가 origin, 원본 저장소는 upstream이라는 이름으로 추가된 것을 확인할 수 있습니다.

 

4. Commit & Push

 

로컬 저장소에서 수정한 내용을 fork 한 원격 저장소에 Commit & Push 해줍니다.

 

 

5. Fetch

 

이때 원본 저장소에 수정 내역을 업데이트하기 전에, 협업 개발자분들의 수정한 내역이 있는지 확인해 줍니다.

 

$ git fetch upstream

 

 

만약 다른 사람이 커밋한 내역으로 인해 Conflict 가 발생했다면, Conflict를 해결하고 다시 fork 한 저장소에 Commit & Push 해주셔야 합니다.

 

 

6. Pull Request

 

Push가 완료되었다면 내 fork 저장소 페이지에 접속해, Pull request 탭으로 들어가 New pull request 버튼을 클릭합니다.

 

 

원본 저장소의 브렌치를 선정하고 Create Pull request 버튼을 클릭해줍니다.

Pull request 타이틀과 내용을 작성해 주면 Pull request가 완료됩니다.

 

 

내가 올린 Pull request를 외부 원본 저장소의 담당자가 확인하고 merge 해주면 외부 원본 저장소에 내 수정 내역이 반영된 결과를 확인할 수 있습니다.

 

팀 프로젝트를 진행하면서 git이 정말 어렵다고 느껴지면서 벽이 생긴 기분이었는데...

계속 공부하다 보니 이제는 조금 익숙해진 거 같습니다..^^

 

항상 merge 해주면 pull 해서 업데이트하는 버릇과 자주 commit 하는 버릇을 가져야 할 거 같습니다.

 


마치며

 

오늘은 Git Hub 외부저장소 동기화 하는 방법에 대해서 포스팅을 해보았습니다.

다음 포스팅에서 뵙겠습니다.

 

728x90