포크 정보
포크는 "업스트림" 리포지토리리라고도 하는 원본 리포지토리에 영향을 미치지 않고 프로젝트를 변경하도록 해줍니다. 리포지토리를 포크한 후, 업스트림 리포지토리에서 업데이트를 가져와 포크를 최신 상태로 유지하고, 끌어오기 요청을 사용하여 포크에서 업스트림 리포지토리로 변경 내용을 제안할 수 있습니다. 포크는 개인 계정 또는 조직에 있을 수 있습니다.
GitHub Enterprise Cloud에서 포크된 리포지토리를 보면, 업스트림 리포지토리가 포크 이름 아래에 표시됩니다.
오픈 소스 프로젝트에서, 포크는 업스트림 리포지토리에 변경 내용을 통합하기 전에 아이디어 또는 변경 내용을 반복하는 데 종종 사용됩니다. 퍼블릭 리포지토리를 개인 계정으로 포크하거나 변경한 후 끌어오기 요청을 열어 변경 내용을 상위 리포지토리에 제안하면, 업스트림 리포지토리에 대한 푸시 액세스 권한이 있는 모든 사용자에게 끌어오기 요청 분기에 변경 내용을 푸시할 수 있는 권한을 부여할 수 있습니다(분기 삭제 포함). 이렇게 하면 리포지토리 유지 관리자가 병합하기 전에 사용자 소유 포크에서 끌어오기 요청 분기로 로컬에서 커밋하거나 테스트를 실행할 수 있도록 하여 협업 속도가 향상됩니다. 조직에서 소유한 포크에는 푸시 권한을 부여할 수 없습니다. 자세한 내용은 "포크에서 만든 끌어오기 요청 분기에 대한 변경 허용"을(를) 참조하세요.
포크를 삭제해도 원래 업스트림 리포지토리는 삭제되지 않습니다. 포크로 푸시된 코드는 업스트림에서 표시되지만 변경 내용은 업스트림 분기 영향을 주지 않습니다. 예를 들어, 업스트림 분기에 영향을 주지 않고 포크에서 공동 작업자를 추가하거나, 파일 이름을 바꾸거나, GitHub Pages을(를) 생성할 수 있습니다. 포크를 삭제한 후에는, 해당 포크를 복원할 수 없습니다. 자세한 내용은 "삭제된 리포지토리 복원" 항목을 참조하세요. 프라이빗 리포지토리를 삭제하는 경우, 리포지토리의 모든 포크가 삭제됩니다.
리포지토리의 포크 페이지에서 리포지토리의 포크를 보고 정렬하고 필터링할 수 있습니다. 자세한 내용은 "리포지토리 간 연결 이해"을 참조하세요.
포크 생성하기 정보
제공된 리포지토리 및 엔터프라이즈 정책에 대한 설정에서 포크를 허용하는 경우, 개인 계정 또는 리포지토리 생성 권한이 있는 GitHub의 조직에 프라이빗 또는 내부 리포지토리를 포크할 수 있습니다. 일반적으로 관리형 사용자가 있는 엔터프라이즈의 구성원이 아니면 리포지토리을(를) 만들 수 있는 권한이 있는 조직이나 개인 계정 퍼블릭 리포지토리 포크할 수 있습니다.
리포지토리 포크에 관한 지침은 "리포지토리 포크" 항목을 참조하세요. 포크를 만들 수 있는 시기와 포크의 사용 권한 및 표시 여부 설정에 대한 자세한 내용은 "포크의 사용 권한 및 표시 여부 정보" 항목을 참조하세요.
Tip
GitHub Desktop을 사용하여 리포지토리를 포크할 수 있습니다. 자세한 내용은 "GitHub Desktop에서 리포지토리 복제 및 포크"을(를) 참조하세요.
리포지토리 포크 대 리포지토리 복제
기존 리포지토리의 콘텐츠에서 새 리포지토리를 만들되 나중에 변경 내용을 업스트림에 병합하지 않으려는 경우, 리포지토리를 복제하거나 리포지토리가 템플릿인 경우 리포지토리를 템플릿으로 사용할 수 있습니다. 자세한 내용은 "리포지토리 복제" 및 "템플릿에서 리포지토리 만들기" 항목을 참조하세요.
리포지토리 포크는 리포지토리를 복제하는 것과 유사하며, 다음의 차이점이 있습니다.
- 포크로 푸시된 코드는 포크가 삭제된 후에도 포크 네트워크의 모든 리포지토리에 표시됩니다.
- 끌어오기 요청을 사용하여 해당 포크에서 업스트림 리포지토리로 변경 내용을 제안할 수 있습니다.
- 업스트림 리포지토리와 해당 포크를 동기화하여 업스트림 리포지토리에서 해당 포크로 변경 내용을 가져올 수 있습니다.
- 포크에는 고유한 구성원, 분기, 태그, 레이블, 정책, 이슈, 끌어오기 요청, 토론, 동작, 프로젝트 및 Wiki가 있습니다.
- 포크는 상위 업스트림 리포지토리의 제한을 상속합니다. 예를 들어, 업스트림 리포지토리가 GitHub Free 플랜을 이용 중인 조직에 속한 경우 분기 보호 규칙을 전달할 수 없습니다.