# 포크들

고유한 설정 및 사용 권한으로 원본에 연결된 별도의 리포지토리를 만들어 포크를 통해 독립적인 공동 작업을 가능하게 하는 방법을 이해합니다.

포크는 업스트림 리포지토리라고 하는 다른 리포지토리의 복사본으로 시작하는 리포지토리입니다. 포크에는 고유한 설정과 권한이 있지만 업스트림 리포지토리에 연결된 상태로 유지됩니다.

포크된 리포지토리를 GitHub볼 때 업스트림 리포지토리는 포크 이름 아래에 표시됩니다.

## 포크와 분기를 구분 짓는 차이점

분기는 하나의 리포지토리의 일부입니다. 포크는 자체 설정 및 공동 작업 공간이 있는 별도의 리포지토리입니다.

각 포크는 고유하게 다음을 가질 수 있습니다:

* 지점
* 구성원 및 토론
* 이슈 및 끌어오기 요청
* 작업 및 프로젝트
* 태그, 레이블, Wiki

## 어떤 리포지토리를 포크할 수 있나요?

퍼블릭 리포지토리는 다음 위치로 포크할 수 있습니다.

* 개인 계정
* 리포지토리 생성 권한이 있는 조직

프라이빗 리포지토리에 액세스할 수 있고, 소유자가 포크를 허용한 경우 해당 리포지토리를 포크할 수 있습니다.

* 개인 계정
* GitHub Team 내에서 리포지토리 생성 권한이 있는 조직

GitHub Free을 사용하여 개인 리포지토리를 조직에 포크할 수 없습니다. GitHub Team 및 GitHub Free에 대한 자세한 내용은 [GitHub 계획](/ko/get-started/learning-about-github/githubs-plans)을(를) 참조하세요.

리포지토리, 조직 및 엔터프라이즈 정책은 리포지토리를 포크할 수 있는지 여부와 포크를 만들 수 있는 위치를 제한할 수 있습니다. 프라이빗 리포지토리의 경우 포크에 대한 액세스는 리포지토리 표시 유형, 조직 구성원 자격 및 관리자 설정에 따라 달라집니다.

멤버인 경우 포크할 수 있는 관리형 사용자가 있는 엔터프라이즈리포지토리에 추가 제한이 적용됩니다.
설명서에서 [Enterprise Managed Users 정보](/ko/enterprise-cloud@latest/admin/concepts/identity-and-access-management/enterprise-managed-users) 을 GitHub Enterprise Cloud 참조하세요

[조직에 대한 포크 정책 관리](/ko/organizations/managing-organization-settings/managing-the-forking-policy-for-your-organization)을 참조하세요.

## 포크의 표시 여부

포크의 공개 범위는 업스트림 리포지토리의 리포지토리 네트워크에 따라 결정됩니다. 공용 리포지토리 포크는 공용이고 프라이빗 리포지토리 포크는 프라이빗입니다. 포크의 표시 유형은 그 자체로 변경할 수 없습니다.

리포지토리 네트워크의 모든 리포지토리는 동일한 표시 유형 설정을 공유합니다. 리포지토리 네트워크에는 업스트림 리포지토리, 해당 리포지토리의 포크, 그리고 그 포크의 포크가 포함됩니다.
[리포지토리 간 연결 이해](/ko/repositories/viewing-activity-and-data-for-your-repository/understanding-connections-between-repositories)을(를) 참조하세요.

리포지토리를 삭제하거나 표시 유형을 변경하면 네트워크에 영향을 줄 수 있습니다. 포크를 삭제하는 경우 해당 포크의 코드 기여는 리포지토리 네트워크에서 계속 액세스할 수 있습니다.

## 리포지토리가 삭제되거나 표시 유형이 변경되면 포크가 어떻게 되나요?

> \[!WARNING]
>
> * 프라이빗 리포지토리에 대한 사용자의 액세스를 제거하면 해당 프라이빗 리포지토리의 모든 포크가 삭제됩니다. 프라이빗 리포지토리의 로컬 클론은 유지됩니다. 프라이빗 리포지토리에 대한 팀의 액세스가 취소되거나 개인 리포지토리에 대한 액세스 권한이 있는 팀이 삭제되고 팀 구성원이 다른 팀을 통해 리포지토리에 액세스할 수 없는 경우 리포지토리의 프라이빗 포크가 삭제됩니다.
> * 리포지토리에 대한 액세스 권한이 손실된 사용자가 기밀 정보 또는 지적 재산을 삭제하도록 할 책임이 있습니다.
> * 프라이빗 리포지토리에 대한 관리자 권한이 있는 사용자는 해당 리포지토리의 포크를 허용하지 않을 수 있으며 조직 소유자는 조직의 개인 리포지토리를 포크할 수 없습니다. 자세한 내용은 [조직에 대한 포크 정책 관리](/ko/organizations/managing-organization-settings/managing-the-forking-policy-for-your-organization) 및 [리포지토리에 대한 포크 정책 관리](/ko/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/managing-the-forking-policy-for-your-repository)을(를) 참조하세요.

가시성 변경은 기존 포크 소유자가 예기치 않은 액세스 손실 없이 작업을 계속할 수 있도록 포크를 새 리포지토리 네트워크로 분리할 수 있습니다.

| 조치                     | 포크에 미치는 영향                                    |
| ---------------------- | --------------------------------------------- |
| 프라이빗 리포지토리가 삭제됨        | 프라이빗 포크도 삭제됩니다.                               |
| 공용 리포지토리가 삭제됨          | 활성 퍼블릭 포크는 네트워크의 새 업스트림 리포지토리가 됩니다.           |
| 공용 리포지토리는 비공개로 만들어집니다. | 공용 포크는 별도의 네트워크에서 공용으로 유지됩니다.                 |
| 프라이빗 리포지토리가 공개됩니다.     | 프라이빗 포크는 비공개로 유지되지만 별도의 프라이빗 네트워크로 연결이 끊어집니다. |
|                        |                                               |

공용 리포지토리를 프라이빗으로 변경하면 별, 감시자, 종속성 그래프 Dependabot alerts및 code scanning 가용성에도 영향을 줄 수 있습니다. 리포지토리 표시 유형 설정을 변경하기 전에 신중하게 검토합니다.

## 포크 사용 권한

프라이빗 포크는 업스트림 리포지토리의 사용 권한 구조를 상속합니다. 이를 통해 프라이빗 리포지토리 소유자가 코드에 대한 제어를 유지할 수 있습니다. 예를 들어 업스트림 리포지토리가 프라이빗 리포지토리이고 팀에 대한 읽기/쓰기 액세스 권한을 제공하는 경우 동일한 팀은 프라이빗 업스트림 리포지토리의 모든 포크에 대한 읽기/쓰기 액세스 권한을 갖습니다. 프라이빗 포크에서는 개별 사용 권한이 아닌 팀 권한만 상속됩니다.

> \[!NOTE]
> 조직에 대한 기본 권한을 변경하면 프라이빗 포크에 대한 사용 권한이 자동으로 업데이트되지 않습니다. 자세한 내용은 [조직에 대한 기본 권한 설정](/ko/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/setting-base-permissions-for-an-organization#about-base-permissions-for-an-organization) 항목을 참조하세요.

퍼블릭 포크는 업스트림 리포지토리의 사용 권한 구조를 상속하지 않습니다. 포크 소유자는 포크에 대한 액세스를 제어하지만 리포지토리 네트워크는 여전히 Git 데이터를 공유합니다. 네트워크의 모든 리포지토리에 푸시된 커밋은 업스트림 리포지토리를 포함하여 해당 네트워크의 다른 리포지토리에서 액세스할 수 있습니다.

퍼블릭 리포지토리를 개인 계정에 포크하는 경우 업스트림 리포지토리의 유지 관리자가 끌어오기 요청 분기에 푸시하도록 허용할 수 있습니다. 이렇게 하면 유지 관리자가 분기를 업데이트하거나, 테스트를 실행하거나, 병합하기 전에 작은 문제를 해결할 수 있습니다. 조직 소유의 포크에 푸시 권한을 부여할 수 없습니다.
[Allowing changes to a pull request branch created from a fork](/ko/pull-requests/how-tos/work-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork)을(를) 참조하세요.

### 포크된 리포지토리용 푸시 규칙 세트

푸시 규칙은 리포지토리의 전체 포크 네트워크에 적용되어 리포지토리에 대한 모든 진입점이 보호되도록 합니다. 예를 들어 푸시 규칙 집합을 사용하도록 설정된 리포지토리를 포크하는 경우 포크된 리포지토리에도 동일한 푸시 규칙 집합이 적용됩니다.

포크된 리포지토리의 경우 푸시 규칙에 대한 바이패스 권한이 있는 사람은 루트 리포지토리에서 바이패스 권한이 있는 사용자뿐입니다.

[규칙 세트에 대한 정보](/ko/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets#push-rulesets)을(를) 참조하세요.

### 중요한 보안 고려 사항

포크는 강력한 공동 작업 도구이지만 간과하기 쉬운 방식으로 코드와 기록을 노출할 수 있습니다.

* 포크에는 업스트림 리포지토리와 별개인 고유한 권한이 있습니다.
* 업스트림 리포지토리의 소유자는 리포지토리 네트워크의 모든 포크를 읽을 수 있습니다.
* 조직 소유자는 개인 네임스페이스에서 만든 포크에 대한 관리 액세스 권한을 가질 수 있습니다.
* 업스트림 리포지토리에 대한 다른 사용자의 액세스를 제거해도 다른 조직의 포크가 항상 삭제되는 것은 아닙니다.
* 포크가 삭제된 후에도 리포지토리 네트워크에서 커밋에 액세스할 수 있습니다.

민감한 작업에 포크를 허용하기 전에 리포지토리 또는 조직의 권한 및 공개 범위 모델을 검토하세요.

### 조직 내 포크

동일한 조직 내의 포크는 업스트림 리포지토리에서 공동 작업자 및 팀 설정을 복사합니다. 조직은 이러한 포크에 대한 권한을 제어하며, 기존에 표시되는 팀은 계속 액세스할 수 있습니다.

### 엔터프라이즈 내부의 포크

내부 리포지토리는 한 단계의 포크만 지원합니다. 내부 리포지토리의 프라이빗 포크는 포크할 수 없습니다. 이렇게 하면 엔터프라이즈에서 볼 수 있는 리포지토리에 대한 액세스 및 관리가 더 간단하게 유지됩니다.