Skip to main content

리포지토리 포크

포크는 원래 "업스트림" 리포지토리와 코드 및 표시 유형 설정을 공유하는 새로운 리포지토리입니다.

포크 정보

포크는 원래 "업스트림" 리포지토리와 코드 및 표시 유형 설정을 공유하는 새로운 리포지토리입니다. 포크는 오픈 소스 프로젝트 또는 사용자가 업스트림 리포지토리에 대한 쓰기 액세스 권한이 없는 경우와 같이 업스트림 리포지토리로 다시 제안되기 전에 아이디어 또는 변경 내용을 반복하는 데 자주 사용됩니다. 자세한 내용은 "포크 작업"을 참조하세요.

다른 사용자의 프로젝트에 변경 내용 제안

예를 들어 포크를 사용하여 버그 수정과 관련된 변경 내용을 제안할 수 있습니다. 찾은 버그에 대한 문제를 로깅하는 대신 다음을 수행할 수 있습니다.

  • 리포지토리를 포크합니다.
  • 수정합니다.
  • 프로젝트 소유자에게 끌어오기 요청을 제출합니다.

다른 사람의 프로젝트를 아이디어의 시작점으로 사용합니다.

오픈 소스 소프트웨어는 코드를 공유함으로써 더 신뢰할 수 있고 더 나은 소프트웨어를 만들 수 있다는 생각을 기반으로 합니다. 자세한 내용은 오픈 소스 이니셔티브의 “오픈 소스 이니셔티브 정보”를 참조하세요.

your GitHub Enterprise Server instance에서 조직의 개발 작업에 오픈 소스 원칙을 적용하는 방법에 대한 자세한 내용은 GitHub의 백서 "내부 원본 소개"를 참조하세요.

다른 사용자 프로젝트의 포크에서 공용 리포지토리를 만들 때 프로젝트를 다른 사용자와 공유할 방법을 결정하는 라이선스 파일을 포함해야 합니다. 자세한 내용은 choosealicense.com의 “오픈 소스 라이선스 선택”을 참조하세요.

오픈 소스, 특히 오픈 소스 프로젝트를 만들고 성장시키는 방법에 대한 자세한 내용을 제공하기 위해 오픈 소스 프로젝트의 리포지토리를 만들고 유지 관리하는 모범 사례를 권장하여 건강한 오픈 소스 커뮤니티를 육성하는 데 도움이 되는 오픈 소스 가이드를 만들었습니다. 또한 오픈 소스 커뮤니티를 유지 관리하기에 관한 무료 GitHub Skills 과정을 이수할 수도 있습니다.

필수 조건

아직 설정하지 않은 경우 먼저 Git에서 your GitHub Enterprise Server instance로 Git 및 인증을 설정합니다. 자세한 내용은 “Git 설정”을 참조하세요.

리포지토리 포크

업스트림 리포지토리에 대한 변경 내용을 제안하기 위해 프로젝트를 포크할 수 있습니다. 이 경우 정기적으로 포크를 업스트림 리포지토리와 동기화하는 것이 좋습니다. 이렇게 하려면 명령줄에서 Git을 사용해야 합니다. 방금 포크한 것과 동일한 octocat/Spoon-Knife 리포지토리를 사용하여 업스트림 리포지토리를 설정하는 방법을 연습할 수 있습니다.

  1. your GitHub Enterprise Server instance에서 octocat/Spoon-Knife 리포지토리로 이동합니다.
  2. 페이지의 오른쪽 상단에서 Fork(포크)를 클릭합니다. 포크 단추

GitHub CLI에 대한 자세한 내용은 “GitHub CLI 정보”를 참조하세요.

리포지토리의 포크를 만들려면 gh repo fork 하위 명령을 사용합니다.

gh repo fork REPOSITORY

조직에서 포크를 만들려면 --org 플래그를 사용합니다.

gh repo fork REPOSITORY --org "octo-org"

포크된 리포지토리 복제

지금은 Spoon-Knife 리포지토리의 포크가 있지만 컴퓨터의 로컬에는 해당 리포지토리에 파일이 없습니다.

  1. your GitHub Enterprise Server instance에서 Spoon-Knife 리포지토리의 포크 로 이동합니다.

  2. 파일 목록 위에서 코드를 클릭합니다. “Code”(코드) 단추

  3. 리포지토리의 URL을 복사합니다.

    • HTTPS를 사용하여 리포지토리를 복제하려면 "HTTPS"에서 을 클릭합니다.
    • 조직의 SSH 인증 기관에서 발급한 인증서를 포함하여 SSH 키를 사용하여 리포지토리를 복제하려면 SSH를 클릭한 다음, 을 클릭합니다.
    • GitHub CLI를 사용하여 리포지토리를 복제하려면 GitHub CLI 를 클릭한 다음, 을 클릭합니다. URL을 복사하여 GitHub CLI를 사용하여 리포지토리를 복제하기 위한 클립보드 아이콘 1. Terminal(터미널)Terminal(터미널)Git Bash를 엽니다. 4. 현재 작업 디렉터리를 복제 대상 디렉터리의 위치로 변경합니다.
  4. git clone을 입력한 다음 이전에 복사한 URL을 붙여넣습니다. 그러면 다음과 같이 되며, 여기서 YOUR-USERNAME 대신 GitHub Enterprise Server 사용자 이름을 사용합니다.

    $ git clone https://HOSTNAME/YOUR-USERNAME/Spoon-Knife
  5. Enter 키를 누릅니다. 로컬 복제본이 만들어집니다.

    $ git clone https://HOSTNAME/YOUR-USERNAME/Spoon-Knife
    > Cloning into `Spoon-Knife`...
    > remote: Counting objects: 10, done.
    > remote: Compressing objects: 100% (8/8), done.
    > remote: Total 10 (delta 1), reused 10 (delta 1)
    > Unpacking objects: 100% (10/10), done.

GitHub CLI에 대한 자세한 내용은 “GitHub CLI 정보”를 참조하세요.

포크의 복제본을 만들려면 --clone 플래그를 사용합니다.

gh repo fork REPOSITORY --clone=true
  1. 파일 메뉴에서 리포지토리 복제를 클릭합니다.

    Mac 앱에서 메뉴 옵션 복제

    Windows 앱에서 메뉴 옵션 복제

    1. 복제하려는 리포지토리의 위치에 해당하는 탭을 클릭합니다. **URL**을 클릭하여 리포지토리 위치를 수동으로 입력할 수도 있습니다.

    리포지토리 복제 메뉴의 위치 탭

    리포지토리 복제 메뉴의 위치 탭

    1. 목록에서 복제하려는 리포지토리를 선택합니다.

    리포지토리 목록 복제

    리포지토리 목록 복제

    1. **선택...** 을 클릭하고 리포지토리를 복제할 로컬 경로로 이동합니다.

    선택 단추

    선택 단추

    1. **복제**를 클릭합니다.

    복제본 단추

    복제본 단추

업스트림 리포지토리와 포크를 동기화하도록 Git 구성

업스트림 리포지토리에 대한 변경 내용을 제안하기 위해 프로젝트를 포크하는 경우 업스트림 리포지토리의 변경 내용을 포크의 로컬 복제본으로 끌어오도록 Git을 구성할 수 있습니다.

  1. your GitHub Enterprise Server instance에서 octocat/Spoon-Knife 리포지토리로 이동합니다.

  2. 파일 목록 위에서 코드를 클릭합니다. “Code”(코드) 단추

  3. 리포지토리의 URL을 복사합니다.

    • HTTPS를 사용하여 리포지토리를 복제하려면 "HTTPS"에서 을 클릭합니다.
    • 조직의 SSH 인증 기관에서 발급한 인증서를 포함하여 SSH 키를 사용하여 리포지토리를 복제하려면 SSH를 클릭한 다음, 을 클릭합니다.
    • GitHub CLI를 사용하여 리포지토리를 복제하려면 GitHub CLI 를 클릭한 다음, 을 클릭합니다. URL을 복사하여 GitHub CLI를 사용하여 리포지토리를 복제하기 위한 클립보드 아이콘 1. Terminal(터미널)Terminal(터미널)Git Bash를 엽니다.
  4. 디렉터리를 복제한 포크의 위치로 변경합니다.

    • 홈 디렉터리로 이동하려면 다른 텍스트 없이 cd를 입력합니다.
    • 현재 디렉터리의 파일 및 폴더를 나열하려면 ls를 입력합니다.
    • 나열된 디렉터리 중 하나로 이동하려면 cd your_listed_directory를 입력합니다.
    • 디렉터리를 하나 위로 이동하려면 cd ..를 입력합니다.
  5. git remote -v를 입력하고 Enter 키를 누릅니다. 포크에 대해 현재 구성된 원격 리포지토리가 표시됩니다.

    $ git remote -v
    > origin  https://HOSTNAME/YOUR_USERNAME/YOUR_FORK.git (fetch)
    > origin  https://HOSTNAME/YOUR_USERNAME/YOUR_FORK.git (push)
  6. git remote add upstream을 입력한 다음, 3단계에서 복사한 URL을 붙여넣고 Enter 키를 누릅니다. 다음과 같이 표시됩니다.

    $ git remote add upstream https://HOSTNAME/ORIGINAL_OWNER/Spoon-Knife.git
  7. 포크에 대해 지정한 새 업스트림 리포지토리를 확인하려면 git remote -v를 다시 입력합니다. 포크에 대한 URL이 로 origin표시되고 업스트림 리포지토리의 URL이 로 표시됩니다 upstream.

    $ git remote -v
    > origin    https://HOSTNAME/YOUR_USERNAME/YOUR_FORK.git (fetch)
    > origin    https://HOSTNAME/YOUR_USERNAME/YOUR_FORK.git (push)
    > upstream  https://HOSTNAME/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
    > upstream  https://HOSTNAME/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

이제 몇 가지 Git 명령을 사용하여 포크를 업스트림 리포지토리와 동기화된 상태로 유지할 수 있습니다. 자세한 내용은 “포크 동기화”를 참조하세요.

GitHub CLI에 대한 자세한 내용은 “GitHub CLI 정보”를 참조하세요.

포크된 리포지토리에 대한 원격 리포지토리를 구성하려면 --remote 플래그를 사용합니다.

gh repo fork REPOSITORY --remote=true

원격 리포지토리의 이름을 지정하려면 --remote-name 플래그를 사용합니다.

gh repo fork REPOSITORY --remote-name "main-remote-repo"

포크 편집

다음을 포함하여 포크를 변경할 수 있습니다.

  • 분기 만들기: 분기를 사용하면 주 프로젝트를 위험에 빠뜨리지 않고 새 기능을 빌드하거나 아이디어를 테스트할 수 있습니다.
  • 끌어오기 요청 열기: 업스트림 리포지토리에 다시 기여하려는 경우 끌어오기 요청을 제출하여 원래 작성자에게 포크를 리포지토리로 끌어오라는 요청을 보낼 수 있습니다.

포크할 다른 리포지토리 찾기

리포지토리를 포크하여 프로젝트에 기여하기 시작합니다. 리포지토리에 대한 설정과 엔터프라이즈 정책에서 포크를 허용하는 경우 리포지토리 만들기 권한이 있는 your GitHub Enterprise Server instance의 개인 계정 또는 조직에 프라이빗 또는 내부 리포지토리를 포크할 수 있습니다.

다음 단계

이제 리포지토리를 포크하고, 포크 복제를 연습하고, 업스트림 리포지토리를 구성했습니다.

  • 포크를 복제하고 컴퓨터에서 포크된 리포지토리의 변경 내용을 동기화하는 방법에 대한 자세한 내용은 “Git 설정”을 참조하세요.

  • 모든 프로젝트를 배치하고 GitHub에 코드를 공유할 수 있는 새 리포지토리를 만들 수도 있습니다. 프로젝트에 대한 리포지토리를 만들면 GitHub에 코드를 저장할 수 있습니다. 이렇게 하면 다른 개발자와 공유하도록 선택할 수 있는 작업의 백업이 제공됩니다. 자세한 내용은 "리포지토리 만들기"를 참조하세요."

  • GitHub의 각 리포지토리는 개인 또는 조직이 소유합니다. GitHub Enterprise Server에서 연결하고 팔로우하여 사용자, 리포지토리, 조직과 상호 작용할 수 있습니다. 자세한 내용은 “소셜 기능 이용”을 참조하세요.

  • GitHub에는 도움을 요청하고 전 세계 사람들과 대화할 수 있는 훌륭한 지원 커뮤니티가 있습니다. GitHub Community 대화에 참여합니다.