다음을 통해 공유


포크

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Git 리포지토리 포크는 사용자가 코드베이스를 실험적, 위험하거나 숨기려는 경우에 유용하지만 이러한 변경 내용은 원래 리포지토리의 코드베이스에서 격리되어야 합니다. 새 포크는 기본적으로 원래 리포지토리의 소스 코드를 공유하는 새 원격 리포지토리입니다.

독립적인 버전인 포크에서 커밋이나 분기를 추가하는 등의 변경 사항은 원본 리포지토리에서 숨겨집니다. 코드베이스 변경 내용을 원래 리포지토리에 병합하려면 PR(끌어오기 요청)을 만들어 해당 변경 내용에 대한 검토 및 승인을 요청해야 합니다.

포크 프로세스는 원래 리포지토리에서 포크로 권한, 정책 또는 빌드 파이프라인을 전송하지 않습니다.

이 문서에서는 Azure Repos Git 리포지토리의 포크 작업에 대해 설명하고 GitHub 리포지토리에서 포크를 관리하는 방법을 설명하는 GitHub 콘텐츠에 대한 링크를 제공합니다.

이 문서에서는 다음 방법을 알아봅니다.

  • 포크 간 코드 공유
  • 분기와 포크 중에서 선택
  • 리포지토리 포크를 활성화
  • 포크 생성
  • 포크를 로컬에 복제하세요
  • 로컬 변경 사항을 당신의 포크에 푸시하세요.
  • PR 만들기 및 완료
  • 포크 동기화

필수 조건

카테고리 요구 사항
프로젝트 액세스 프로젝트멤버입니다.
권한 - 프라이빗 프로젝트에서 코드 보기: 최소 기본 액세스.
- 프라이빗 프로젝트의 코드 복제 또는 기여: 기여자 보안 그룹 또는 프로젝트의 해당 사용 권한의 구성원입니다.
- 분기 또는 리포지토리 사용 권한 설정: 분기 또는 리포지토리에 대한 사용 권한 사용 권한 관리
- 기본 분기 변경: 리포지토리에 대한 정책 편집 권한 설정.
- 리포지토리 가져오기: 프로젝트 관리자 보안 그룹의 구성원이거나, Git 프로젝트 수준에서 리포지토리 만들기 권한이 허용으로 설정된 경우. 자세한 내용은 Git 리포지토리 권한 설정을 참조 하세요.
서비스 리포지토리가 활성화되었습니다.
도구 선택 사항. az repos 명령어를 사용하세요: Azure DevOps CLI.

참고 사항

퍼블릭 프로젝트에서 이해 관계자 액세스 권한이 있는 사용자는 코드 보기, 복제 및 기여를 포함하여 Azure Repos에 대한 모든 권한을 갖습니다.

카테고리 요구 사항
프로젝트 액세스 프로젝트멤버입니다.
권한 - 코드 보기: 최소 베이직 접근 권한.
- 코드 복제 또는 기여: 기여자 보안 그룹의 구성원이거나 프로젝트에서 해당 권한을 가진 경우.
서비스 리포지토리가 활성화되었습니다.

포크 간 코드 공유

원래 리포지토리를 업스트림 리포지토리라고도 합니다. 포크에서 업스트림으로 또는 업스트림에서 포크로 변경 내용을 병합하는 PR을 만들 수 있습니다. 가장 일반적인 방향은 포크에서 업스트림까지입니다. 대상 리포지토리의 권한, 정책, 빌드 및 작업 항목이 PR에 적용됩니다.

분기와 포크 중에서 선택

2~5개 개발자로 구성된 소규모 팀의 경우 모든 사용자가 기능 분기 작업할 수 있고 분기 정책이 기본 분기 보호할 수 있으므로 포크 워크플로가 필요하지 않을 수 있습니다. 그러나 팀이 이 체제를 능가하고 더 성장하면 포킹 워크플로로 전환할 수 있습니다.

리포지토리에 오픈 소스 프로젝트와 같이 일반적이거나 드문 커밋자가 많은 경우 포크 워크플로를 사용하는 것이 좋습니다. 일반적으로 프로젝트의 핵심 기여자만 원래 리포지토리에 대한 직접 커밋 권한을 가져야 합니다. 다른 협력자는 핵심 기여자가 작업을 검토할 기회가 있을 때까지 포크 워크플로를 사용하여 제안된 변경 내용을 격리해야 합니다.

저장소 포크 활성화

Azure Repos Git 리포지토리에 포크를 사용하도록 설정하려면 포크 사용을 참조 하세요.

GitHub 리포지토리에 포크를 사용하도록 설정하려면 조직의 포크 정책 관리를 참조하세요.

포크 기반 워크플로우

포크 워크플로우는 다음 섹션에서 설명된 다섯 단계로 구성되어 있습니다.

  1. 포크 만들기
  2. 포크를 로컬에 복제하기
  3. 로컬 변경 사항을 포크로 푸시하십시오
  4. PR 만들기 및 완료
  5. 포크 동기화

포크 생성

다음 단계에서는 Azure Repos Git 리포지토리를 포크하는 방법을 설명합니다.

참고

Azure DevOps 프로젝트에서 리포지토리를 포크하려면 해당 프로젝트에 대한 리포지토리 만들기 권한을 갖습니다. 리포지토리 소유자는 포크 전용 프로젝트를 만들고 모든 기여자에게 리포지토리 만들기 권한을 할당하는 것을 고려해야 합니다. 사용 권한 설정에 대한 자세한 내용은 Git 리포지토리 권한 설정을 참조하세요.

  1. 웹 브라우저에서 포크하려는 Azure Repos Git 리포지토리로 이동합니다. 리포 파일을 선택한 후, 줄임표 메뉴에서 포크를 선택하여 포크 대화 상자를 엽니다.

    Azure Repos의 리포지토리 파일 페이지에 있는 추가 작업 메뉴의 포크 메뉴 항목 스크린샷

  2. 포크 대화 상자에서 포크된 리포지토리의 이름을 지정하고 포크를 만들 프로젝트를 선택하고 포크에 포함할 분기를 선택한 다음 포크를 선택합니다. 포크에 모든 브랜치를 포함할지 아니면 기본 브랜치만 포함할지 지정할 수 있습니다. 리포지토리에 여러 토픽 분기가 포함된 경우 포크에 기본 분기 포함하는 것이 좋습니다.

    Azure Repos의 리포지토리 파일 페이지에 있는 포크 대화 상자의 스크린샷

GitHub 리포지토리를 포크하는 방법에 대한 자세한 내용은 리포지토리 포크를 참조하세요.

포크를 로컬에 복제하세요

리포지토리 를 포크한 후 포크를 복제 하여 컴퓨터의 폴더에 로컬 복사본을 만듭니다. 명령줄에서 또는 Visual Studio와 같은 IDE를 사용하여 복제할 수 있습니다. 리포지토리 복제에 대한 자세한 내용은 기존 Git 리포지토리 복제를 참조하세요.

원격 리포지토리를 복제할 때 Git은 복제한 원격 리포지토리의 URL에 대한 약식으로 별칭 origin 을 할당합니다. 편의를 위해 포크한 리포지토리에 대해 명명 upstream 된 다른 별칭을 추가합니다. 이를 업스트림 리포지토리라고 합니다. 다음 단계에서는 별칭을 추가하는 upstream 방법을 설명합니다.

편의를 위해 Git 명령에서 해당 URL 대신 originupstream 별칭을 사용할 수 있습니다.

Visual Studio에서 별칭을 추가 upstream 하려면 다음 단계를 수행합니다.

  1. 메뉴 모음에서 도구 > 옵션을 선택하여 옵션 창을 엽니다. 소스 제어 Git 리포지토리 설정 원격을 선택한 다음 추가를 선택하여 원격 추가 대화 상자를 엽니다.

    Visual Studio 2019의 소스 제어 메뉴에 있는 Git 리포지토리 설정 하위 메뉴의 원격 창에 있는 추가 단추 스크린샷

  2. 원격 추가 대화 상자에서 새 원격 upstream 를 추가하고 포크한 리포지토리의 Git 복제 URL을 입력합니다. 그런 다음 저장을 선택합니다.

    Visual Studio 2019의 원격 추가 대화 상자 스크린샷

로컬 변경 사항을 귀하의 포크로 푸시하세요.

포크할 때 원래 리포지토리의 개인 버전을 만듭니다(원래 리포지토리를 "업스트림"이라고 함). 포크는 업스트림과 독립적이지만 포크는 코드를 공유하고 업스트림에 대한 링크를 유지하므로 향후 동기화가 가능합니다. 그러므로 로컬 클론의 main 분기에서 직접 작업한 후, 해당 작업을 main 포크의 분기로 푸시하는 것을 방해할 요소는 없습니다. 그러나 일반적으로 작업에 기능 분기(branch)를 사용하는 것이 좋습니다. 기능 분기 사용:

  • 여러 독립 작업 스트림을 동시에 유지할 수 있습니다.

  • 해당 작업은 분기별로 고유한 작업 스트림으로 구성되므로 다른 사용자가 공유하는 작업을 더 쉽게 이해할 수 있습니다.

일반적인 Git 워크플로 에는 다음 단계가 포함됩니다.

  1. 로컬 기능 또는 버그 수정 분기를 만듭니 다.

  2. 새로운 브랜치에서 변경 사항을 만들고 작업을 커밋합니다. 일반적으로 사용자는 기능 또는 버그 수정 작업을 할 때 여러 커밋을 합니다.

  3. 기능 또는 버그 수정 브랜치를 자신의 포크로 푸시합니다. 귀하의 포크에 별칭 origin이 있습니다.

변경 내용을 푸시하는 방법에 대한 자세한 내용은 푸시를 사용하여 코드 공유를 참조하세요.

PR 만들기 및 완료

Azure Repos에서 포크에 푸시한 변경 내용을 원래 리포지토리에 병합하려면 다음을 수행할 수 있습니다.

  1. 변경 내용의 검토 및 승인을 요청하는 PR을 만듭니다. PR을 생성할 때, PR의 원본 분기를 자신의 포크에 있는 기능 혹은 버그 수정을 위한 분기로 설정합니다. 리포지토리를 포크할 때 보통 main 분기를 PR의 목표 분기로 합니다. 해당 리포지토리를 업스트림 리포지토리라고 하며 별칭이 있습니다 upstream.

    다음 스크린샷은 Azure Repos에서 만든 PR의 원본 리포지토리 및 분기와 대상 리포지토리 및 분기를 보여줍니다.

    Azure Repos의 PR 원본 및 대상 분기 옵션 스크린샷

    브라우저, Visual Studio 또는 Azure DevOps CLI를 사용하여 PR을 만드는 방법에 대한 자세한 내용은 PR 만들기를 참조하세요.

    중요한

    Project Valid Users의 모든 사용자와 업스트림 리포지토리에 대한 읽기 권한이 있는 사용자는 해당 리포지토리에 PR을 열 수 있습니다. 업스트림 리포지토리에 PR 생성 시 실행되도록 구성된 PR 빌드 파이프라인 이 있는 경우 PR에서 도입된 변경 내용에 따라 빌드가 실행됩니다.

  2. PR이 완료되려면 모든 필수 검토자가 PR 변경 내용을 승인해야 하며 모든 대상 분기 정책을 충족해야 합니다. PR 승인 및 완료 시 PR 원본 분기의 변경 내용이 PR 대상 분기에 병합됩니다.

GitHub PR을 만들고 완료하는 방법에 대한 자세한 내용은 끌어오기 요청 만들기 및 끌어오기 요청 병합을 참조하세요.

포크 동기화

PR이 포크의 변경 내용을 업스트림 리포지토리의 대상 분기에 병합한 후, 업스트림 리포지토리의 대상 분기에서 pull하여 본인의 로컬 분기를 업데이트하면, 본인의 변경 내용과 다른 기여자가 변경한 내용 모두를 반영할 수 있습니다. 그러면 다음을 수행할 준비가 완료되었습니다.

  • 업데이트된 로컬 분기에서 새 기능 또는 버그 수정 분기를 만듭니다.

  • 업데이트된 로컬 분기에서 푸시하여 origin를 업데이트하세요.

일반적으로 업스트림 리포지토리의 대상 분기는 main. 로컬 main 분기를 직접 편집하지 않는 경우(기능 분기 작업) 업스트림 분기 끌어와서 병합 충돌 upstream/main 없이 로컬 main 분기를 업데이트합니다.

다음 단계