깃허브 포크 사용법과 클론 차이부터 원본 동기화까지

세 개의 기하학적 플랫폼과 빛나는 데이터 경로로 연결된 깃 협업 구조 모델
깃허브 포크 기본 개념과 사용법 내용을 정리한 대표 이미지

깃허브 포크는 다른 사람의 저장소를 자신의 원격 계정으로 통째로 복제해 자유롭게 수정할 수 있도록 지원하는 기능입니다. 깃 자체의 명령어가 아니라 원격 호스팅 서비스에서 제공하는 플랫폼 기능이므로, 원본 프로젝트에 직접적인 쓰기 권한이 없어도 누구나 독립된 환경에서 개발을 진행할 수 있습니다.

오픈소스 프로젝트에 기여하거나 타인의 코드를 기반으로 새로운 기능을 실험할 때 포크 작업은 출발점이 됩니다. 원본 저장소의 코드베이스와 커밋 이력을 그대로 유지한 채 자신만의 저장소에서 안전하게 커밋하고 푸시할 수 있어 협업 과정에서 널리 활용됩니다.

이 글에서는 포크의 기본 개념부터 로컬 복제와의 차이점, 원격 저장소 설정 및 동기화 절차까지 실무에 필요한 흐름을 차례대로 설명합니다. 단계별 명령어를 차근차근 익혀두면 오픈소스 기여와 팀 협업을 훨씬 매끄럽게 진행할 수 있습니다.

핵심 요약
  • 포크는 깃 명령어가 아니라 깃허브 웹 화면에서 계정 간에 원격 저장소를 복제하는 기능입니다.
  • 클론은 원격 저장소를 내 로컬 컴퓨터로 내려받는 작업이며, 포크는 원격 서버 상에 복제본을 만듭니다.
  • 원본 저장소를 업스트림(upstream)으로 등록해 두면 최신 변경 사항을 쉽게 가져와 동기화할 수 있습니다.
  • 작업 완료 후에는 원본 저장소 관리자에게 변경 사항 반영을 요청하는 풀리퀘스트를 보낼 수 있습니다.

깃허브 포크 기본 개념과 사용법

깃허브 공식 문서에 따르면 포크는 원본 저장소와 분리된 독립적인 권한을 가진 복제본을 사용자의 네임스페이스에 생성합니다. 원본 저장소에 커밋할 수 있는 쓰기 권한이 없는 외부 기여자라도 포크를 이용하면 코드를 안전하게 수정하고 보관할 수 있습니다. 터미널에서 입력하는 전용 명령어가 존재하는 것이 아니라 웹 화면의 단추를 눌러 실행하는 방식입니다.

기본적인 git fork 사용법은 단순합니다. 기여하고 싶은 원격 저장소 페이지로 이동한 뒤 우측 상단에 위치한 Fork 단추를 누르면 생성 옵션 창이 나타납니다. 복제본을 저장할 계정이나 조직을 선택하고 생성을 완료하면 본인 계정 아래 동일한 이름의 원격 저장소가 즉시 만들어집니다.

이렇게 생성된 저장소는 원본 프로젝트의 파일과 커밋 기록을 모두 이어받습니다. 다만 이슈(Issues)나 풀리퀘스트(Pull Requests), 위키(Wiki)와 같은 부가 요소는 복제 대상에서 제외되고 오직 코드베이스와 커밋 히스토리 중심으로 복사된다는 특징이 있습니다.

포크 생성 팁
조직(Organization) 계정을 관리하고 있다면 개인 계정 외에 조직 공간으로도 저장소를 포크할 수 있습니다. 복제 시 기본 브랜치만 가져올지 전체 브랜치를 포함할지 선택하는 옵션도 제공되므로 필요에 맞게 지정하세요.

포크와 클론의 결정적인 차이점

많은 분이 포크 클론 차이에 대해 혼동하곤 합니다. 두 작업 모두 저장소를 복제한다는 공통점이 있지만, 복제본이 위치하는 물리적 공간과 부여되는 작업 권한에서 뚜렷한 차이가 드러납니다. 클론은 깃의 고유 명령어이며 원격 서버의 내용을 내 개인 컴퓨터 즉 로컬 환경으로 내려받는 행위입니다.

서버 간 복제되는 좌측 구조와 노트북으로 내려받는 우측 구조의 분할 비교
클라우드 원격 저장소 간 복제인 포크와 로컬 기기로 소스코드를 내려받는 클론의 위치 차이

반면 포크는 로컬 컴퓨터가 아닌 원격 호스팅 서비스 서버 내부에서 동작합니다. A라는 사용자의 원격 저장소를 B라는 사용자의 원격 계정으로 복제하는 것이 포크이며, 이후 실제 코드를 수정하려면 포크해 온 원격 저장소를 다시 개인 컴퓨터로 클론하는 과정을 거쳐야 합니다.

권한 측면에서도 차이가 큽니다. 권한이 없는 저장소를 단순 클론한 경우 로컬에서 코드를 변경하더라도 원격 저장소로 직접 푸시할 수 없습니다. 포크를 진행하면 본인 계정의 저장소가 되기 때문에 마음껏 브랜치를 생성하고 자유롭게 푸시할 수 있습니다.

구분 포크 (Fork) 클론 (Clone)
동작 위치 원격 플랫폼 서버 간 (GitHub 상) 원격 서버에서 로컬 컴퓨터로
동작 주체 플랫폼 부가 기능 (GUI 버튼 지원) Git 자체 내장 명령어 (git clone)
쓰기 권한 복제된 본인 저장소에 완전한 권한 보유 원본 저장소의 접근 설정에 따라 결정
연결 대상 원본 저장소와의 관계 링크 유지 지정한 단일 원격 저장소와 연결

원본 저장소 동기화 방법

포크를 완료한 후 시간이 흐르면 원본 프로젝트에는 새로운 커밋이 지속적으로 쌓입니다. 내 복제본이 과거 상태에 머물러 있으면 충돌이 발생하기 쉬우므로 깃허브 원본 동기화 작업이 주기적으로 이루어져야 합니다. 이를 위해 로컬 환경에서 원본 저장소를 별도의 원격 주소로 등록하는 작업이 필요합니다.

통상적으로 본인의 원격 복제본은 origin이라는 이름으로 자동 지정됩니다. 여기에 원본 프로젝트의 주소를 upstream이라는 이름의 원격 저장소로 추가해 주면 동기화 준비가 완료됩니다. 터미널에서 다음 명령어를 차례로 입력하여 등록 상태를 확인합니다.

git remote add upstream [원본_저장소_URL]
git remote -v

원격 등록이 끝나면 upstream의 최신 커밋들을 로컬로 가져온 다음 내 작업 브랜치에 병합합니다. 최신 변경 사항을 내려받는 흐름은 아래 명령어로 수행할 수 있습니다.

git fetch upstream
git checkout main
git merge upstream/main
git push origin main
동기화 시 주의점
메인 브랜치에서 직접 코드를 수정하지 않는 것이 좋습니다. 항상 기능별로 새 브랜치를 만들어 작업해야 upstream 병합 시 충돌 위험을 줄이고 깔끔하게 이력을 관리할 수 있습니다.

작업 완료 후 풀리퀘스트 요청 절차

독립된 환경에서 코드 작성을 마쳤다면 변경 사항을 원본 프로젝트에 합쳐달라고 요청해야 합니다. 이때 사용하는 방식이 바로 깃허브 풀리퀘스트(PR)입니다. 원본 프로젝트 관리자는 제출된 코드를 검토하고 문제가 없을 때 공식 코드베이스에 통합합니다.

로컬에서 새 기능 브랜치에 커밋을 작성하고 본인의 원격 저장소(origin)로 푸시하면 깃허브 웹 페이지에 알림 배너가 뜹니다. Compare & pull request 단추를 클릭해 변경된 내용과 커밋 목록을 검토한 후 본문에 어떤 문제를 해결했는지 설명 글을 작성합니다.

요청이 등록되면 프로젝트 관리자와 다른 기여자들이 코드를 리뷰하게 됩니다. 추가 수정이 필요하다는 피드백을 받더라도 새 풀리퀘스트를 만들 필요 없이, 로컬 브랜치에서 추가 커밋 후 다시 푸시하면 기존 요청 내역에 자동으로 반영됩니다.

자주 묻는 질문

Q. 터미널 명령어로 git fork를 직접 실행할 수 있나요?

A. 깃 자체에는 fork라는 기본 명령어가 없습니다. 터미널에서 포크 작업을 진행하려면 깃허브 공식 CLI 도구인 gh 명령어를 설치한 후 gh repo fork 명령을 활용해야 합니다.

Q. 원본 저장소가 비공개(Private)인 경우에도 포크가 가능한가요?

A. 비공개 저장소는 관리자가 포크 허용 옵션을 켜두고 본인에게 접근 권한이 부여되어 있을 때만 가능합니다. 권한이 없는 외부 비공개 저장소는 화면에 접근할 수 없어 포크가 불가능합니다.

Q. 웹 화면에서 간편하게 원본 동기화를 할 수 있나요?

A. 깃허브 웹사이트의 본인 포크 저장소 상단에 있는 Sync fork 단추를 누르면 로컬 터미널 명령 없이도 원본 메인 브랜치의 최신 커밋을 즉시 가져와 병합할 수 있습니다.

포크 기능은 권한 제약 없이 전 세계 오픈소스 프로젝트에 안전하게 참여할 수 있도록 돕는 유용한 도구입니다. 복제본을 개인 작업 공간으로 삼고 원본과의 동기화 규칙만 잘 지킨다면 버전 충돌 없이 매끄러운 개발 흐름을 유지할 수 있습니다.

처음에는 upstream 설정이나 풀리퀘스트 과정이 낯설게 느껴질 수 있지만, 저장소 분리와 동기화의 기본 흐름을 체계적으로 이해해 두면 다양한 협업 환경에서도 자신 있게 코드를 다룰 수 있습니다.

이 글은 일반적인 정보 제공을 목적으로 작성되었습니다. 세부 기준과 적용 조건은 개정 여부나 개인의 상황에 따라 달라질 수 있으므로, 실제 결정을 내리기 전에 관련 기관의 최신 안내나 해당 분야 전문가의 확인을 받으시길 권장합니다.

댓글 쓰기

다음 이전