Skip to main content

Enterprise Server 3.15 은(는) 현재 릴리스 후보로 제공됩니다.

리포지토리 포크

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

Platform navigation

포크 정보

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

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

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

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

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

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

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

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

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

필수 조건

아직 설정하지 않은 경우, 먼저 Git의 GitHub Enterprise Server 인스턴스을(를) 사용하여 Git 및 인증을 설정합니다. 자세한 내용은 "Git 설정" 항목을 참조하세요.

리포지토리 포크

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

  1. GitHub Enterprise Server 인스턴스에서 octocat/Spoon-Knife 리포지토리로 이동하세요.

  2. 페이지의 오른쪽 상단에서 Fork(포크)를 클릭합니다.

    리포지토리의 기본 페이지 스크린샷 포크 아이콘과 "포크 59.3k"로 레이블이 지정된 단추가 진한 주황색 윤곽선으로 표시됩니다.

  3. "소유자"에서 드롭다운 메뉴를 선택하고 포크된 리포지토리의 소유자를 선택합니다.

  4. 기본적으로 포크의 이름은 업스트림 리포지토리와 동일합니다. 필요에 따라 포크를 더 구분하려면, "리포지토리 이름" 필드에 이름을 입력합니다.

  5. 필요에 따라 ‘설명’ 필드에 포크 설명을 입력합니다.

  6. 필요에 따라 DEFAULT 분기만 복사를 선택합니다.

    오픈 소스 프로젝트에 기여하는 것과 같은 많은 포크 시나리오의 경우 기본 분기만 복사하면 됩니다. 이 옵션을 선택하지 않으면, 모든 분기가 새 포크로 복사됩니다.

  7. 포크 만들기를 클릭합니다.

참고: 업스트림 리포지토리에서 추가 분기를 복사하려는 경우 분기 페이지에서 복사할 수 있습니다. 자세한 내용은 "리포지토리 내에서 분기 만들기 및 삭제" 항목을 참조하세요.

Dependabot alerts의 자세한 내용은 “GitHub CLI 정보”를 참조하세요.

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

gh repo fork REPOSITORY

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

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

GitHub.com 또는 GitHub Desktop에 리포지토리를 포크할 수 있습니다. GitHub.com에서 포크하는 방법에 대한 자세한 내용은 이 문서의 웹 브라우저 버전을 참조하세요.

GitHub Desktop에서 쓰기 권한이 없는 리포지토리를 복제하면 자동으로 포크를 만듭니다.

  1. 파일 메뉴에서 리포지토리 복제를 클릭합니다.

    Mac의 메뉴 모음 스크린샷 "파일" 드롭다운 메뉴가 확장되고 "리포지토리 복제" 옵션이 주황색 윤곽선으로 강조 표시됩니다.

    Windows의 "GitHub Desktop" 메뉴 모음 스크린샷 "파일" 드롭다운 메뉴가 확장되고 "리포지토리 복제" 옵션이 주황색 윤곽선으로 강조 표시됩니다.

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

    “리포지토리 복제” 창의 스크린샷 창 위쪽에 "GitHub.com", "GitHub Enterprise" 및 "URL"이라는 레이블이 지정된 탭이 주황색 윤곽선으로 강조 표시됩니다.

  3. 리포지토리 목록에서 복제할 리포지토리를 클릭합니다.

    “리포지토리 복제” 창의 스크린샷 "github/docs" 리포지토리가 주황색 윤곽선으로 강조 표시됩니다.

  4. 리포지토리를 복제할 로컬 디렉터리를 선택하려면 "로컬 경로" 필드 옆에 있는 선택… 을 클릭하고 디렉터리로 이동합니다.

    “리포지토리 복제” 창의 스크린샷 "선택"이라는 레이블이 지정된 단추가 주황색 윤곽선으로 강조 표시됩니다.

  5. "리포지토리 복제" 창 아래쪽에서 복제를 클릭합니다.

  6. "포크를 어떻게 사용할 계획인가요?"에서 정보를 확인하세요. 사용합니다.

    • 원래 업스트림 리포지토리에 기여하기 위해 이 포크를 사용하려는 경우 부모 프로젝트에 기여하려면을 클릭합니다.
    • 업스트림에 연결되지 않은 프로젝트에 이 포크를 사용하려는 경우 내 용도를 클릭합니다.
  7. 계속을 클릭합니다.

포크된 리포지토리 복제

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

  1. GitHub Enterprise Server 인스턴스에서 Spoon-Knife 리포지토리의 포크로 이동하세요.

  2. 파일 목록 위에서 코드를 클릭합니다.

    리포지토리의 방문 페이지에 있는 파일 목록의 스크린샷. "코드" 단추는 진한 주황색 윤곽선으로 강조 표시됩니다.

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

    • HTTPS를 사용하여 리포지토리를 복제하려면 "HTTPS"에서 을 클릭합니다.

    • 조직의 SSH 인증 기관에서 발급한 인증서를 포함하여 SSH 키를 사용하여 리포지토리를 복제하려면 SSH를 클릭한 다음, 을 클릭합니다.

    • GitHub CLI를 사용하여 리포지토리를 복제하려면 GitHub CLI 를 클릭한 다음, 을 클릭합니다.

      "코드" 드롭다운 메뉴의 스크린샷. 리포지토리의 HTTPS URL 오른쪽에 복사 아이콘이 진한 주황색으로 표시됩니다.

  4. Terminal(터미널)Terminal(터미널)Git Bash를 엽니다.

  5. 현재 작업 디렉터리를 복제 대상 디렉터리의 위치로 변경합니다.

  6. git clone을 입력한 다음 이전에 복사한 URL을 붙여넣습니다. 그러면 다음과 같이 되며, 여기서 YOUR-USERNAME 대신 GitHub Enterprise Server 사용자 이름을 사용합니다.

    git clone https://HOSTNAME/YOUR-USERNAME/Spoon-Knife
    
  7. 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.
    

Dependabot alerts의 자세한 내용은 “GitHub CLI 정보”를 참조하세요.

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

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

    Mac의 메뉴 모음 스크린샷 "파일" 드롭다운 메뉴가 확장되고 "리포지토리 복제" 옵션이 주황색 윤곽선으로 강조 표시됩니다.

    Windows의 "GitHub Desktop" 메뉴 모음 스크린샷 "파일" 드롭다운 메뉴가 확장되고 "리포지토리 복제" 옵션이 주황색 윤곽선으로 강조 표시됩니다.

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

    “리포지토리 복제” 창의 스크린샷 창 위쪽에 "GitHub.com", "GitHub Enterprise" 및 "URL"이라는 레이블이 지정된 탭이 주황색 윤곽선으로 강조 표시됩니다.

  3. 리포지토리 목록에서 복제할 리포지토리를 클릭합니다.

    “리포지토리 복제” 창의 스크린샷 "github/docs" 리포지토리가 주황색 윤곽선으로 강조 표시됩니다.

  4. 리포지토리를 복제할 로컬 디렉터리를 선택하려면 "로컬 경로" 필드 옆에 있는 선택… 을 클릭하고 디렉터리로 이동합니다.

    “리포지토리 복제” 창의 스크린샷 "선택"이라는 레이블이 지정된 단추가 주황색 윤곽선으로 강조 표시됩니다.

  5. "리포지토리 복제" 창 아래쪽에서 복제를 클릭합니다.

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

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

  1. GitHub Enterprise Server 인스턴스에서 octocat/Spoon-Knife 리포지토리로 이동하세요.

  2. 파일 목록 위에서 코드를 클릭합니다.

    리포지토리의 방문 페이지에 있는 파일 목록의 스크린샷. "코드" 단추는 진한 주황색 윤곽선으로 강조 표시됩니다.

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

    • HTTPS를 사용하여 리포지토리를 복제하려면 "HTTPS"에서 을 클릭합니다.

    • 조직의 SSH 인증 기관에서 발급한 인증서를 포함하여 SSH 키를 사용하여 리포지토리를 복제하려면 SSH를 클릭한 다음, 을 클릭합니다.

    • GitHub CLI를 사용하여 리포지토리를 복제하려면 GitHub CLI 를 클릭한 다음, 을 클릭합니다.

      "코드" 드롭다운 메뉴의 스크린샷. 리포지토리의 HTTPS URL 오른쪽에 복사 아이콘이 진한 주황색으로 표시됩니다.

  4. Terminal(터미널)Terminal(터미널)Git Bash를 엽니다.

  5. 디렉터리를 복제한 포크의 위치로 변경합니다.

    • 홈 디렉터리로 이동하려면 다른 텍스트 없이 cd를 입력합니다.
    • 현재 디렉터리의 파일 및 폴더를 나열하려면 ls를 입력합니다.
    • 나열된 디렉터리 중 하나로 이동하려면 cd YOUR-LISTED-DIRECTORY를 입력합니다.
    • 디렉터리를 하나 위로 이동하려면 cd ..를 입력합니다.
  6. 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)
    
  7. git remote add upstream을 입력한 다음, 3단계에서 복사한 URL을 붙여넣고 Enter 키를 누릅니다. 다음과 같이 표시됩니다.

    git remote add upstream https://HOSTNAME/ORIGINAL-OWNER/Spoon-Knife.git
    
  8. 포크에 대해 지정한 새 업스트림 리포지토리를 확인하려면 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 명령을 사용하여 포크를 업스트림 리포지토리와 동기화된 상태로 유지할 수 있습니다. 자세한 내용은 "포크 동기화" 항목을 참조하세요.

Dependabot alerts의 자세한 내용은 “GitHub CLI 정보”를 참조하세요.

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

gh repo fork REPOSITORY --remote=true

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

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

포크 편집

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

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

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

리포지토리를 포크하여 프로젝트에 기여하기 시작합니다. 제공된 리포지토리 및 엔터프라이즈 정책에 대한 설정에서 포크를 허용하는 경우, 개인 계정 또는 리포지토리 생성 권한이 있는 GitHub의 조직에 프라이빗 또는 내부 리포지토리를 포크할 수 있습니다. 일반적으로 관리형 사용자가 있는 엔터프라이즈의 구성원이 아니면 리포지토리 리포지토리를 포크할 수 있는 시기에 대한 자세한 내용은 "포크의 사용 권한 및 표시 여부 정보" 항목을 참조하세요.

다음 단계

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

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

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

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

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