포크 워크플로 구현

완료됨

포크는 리포지토리의 복사본입니다. 리포지토리를 포크하면 원래 프로젝트에 영향을 주지 않고 변경 내용을 자유롭게 실험할 수 있습니다.

가장 일반적으로 포크는 다른 사람의 프로젝트에 대한 변경 내용을 제안하거나 다른 사람의 프로젝트를 아이디어의 시작점으로 사용하는 데 사용됩니다.

포크는 모든 파일, 커밋 및(선택 사항) 분기를 포함하여 리포지토리의 전체 복사본입니다.

포크는 내부 원본 워크플로를 지원하는 좋은 방법입니다. 원래 프로젝트에 직접 쓸 수 있는 권한이 없는 경우 포크를 만들어 변경 내용을 제안할 수 있습니다. 변경 내용을 공유할 준비가 되면 끌어오기 요청을 사용하여 쉽게 다시 기여할 수 있습니다.

포크에 무엇이 있나요?

포크는 업스트림(원본) 리포지토리의 모든 콘텐츠에서 시작됩니다. 포크를 만들 때 모든 분기를 포함하거나 기본 분기로만 제한할 수 있습니다.

중요 참고 사항:

  • 사용 권한, 정책 또는 빌드 파이프라인은 복사되지 않습니다.
  • 새 포크는 누군가가 원래 리포지토리를 복제한 다음 빈 새 리포지토리로 푸시하는 것처럼 작동합니다.
  • 포크를 만든 후에는 끌어오기 요청이 전달되지 않는 한 새 파일, 폴더 및 분기가 리포지토리 간에 공유되지 않습니다.

포크 간에 코드 공유

포크에서 업스트림으로 또는 업스트림에서 포크까지 어느 방향으로든 끌어오기 요청을 만들 수 있습니다. 가장 일반적인 방식은 포크에서 업스트림으로 접근하는 것입니다.

대상 리포지토리의 권한, 정책, 빌드 및 작업 항목이 끌어오기 요청에 적용됩니다.

분기와 포크 중에서 선택

  • 소규모 팀(2~5명 개발자): 단일 리포지토리에서 작업하는 것이 좋습니다. 모든 사용자는 토픽 분기에서 작업해야 하며 주 분기는 분기 정책으로 보호되어야 합니다.

  • 더 큰 팀: 팀이 성장함에 따라 이 구성을 능가하고 포크 워크플로로의 전환을 선호하게 될 수 있습니다.

  • 포크를 사용하는 경우:

    • 귀하의 리포지토리에는 오픈 소스 프로젝트처럼 비정기적으로 참여하는 많은 기여자가 있습니다.
    • 핵심 기여자만 리포지토리에 대한 직접 커밋 권한을 갖습니다.
    • 핵심 팀 외부의 협력자가 포크를 통해 작업하기를 원합니다.
    • 작업을 검토할 기회가 될 때까지 변경 내용을 격리하려고 합니다.

포크 워크플로

다음은 포크 워크플로에 대한 기본 단계입니다.

  1. 포크를 만듭니다.
  2. 로컬로 복제합니다.
  3. 로컬에서 변경 사항을 수행하고 브랜치에 푸시합니다.
  4. 업스트림에 대한 풀 리퀘스트를 생성하고 완료합니다.
  5. 포크를 업스트림의 최신 버전으로 동기화하세요.

1단계: 포크 만들기

  1. 포크할 리포지토리로 이동하고 "포크"를 선택합니다.
  2. 이름을 지정하고 포크를 만들 프로젝트를 선택합니다.
  3. 리포지토리에 많은 토픽 분기가 포함된 경우 기본 분기만 포크하는 것이 좋습니다.
  4. 줄임표와 "포크"를 차례로 선택하여 포크를 만듭니다.

포크 만들기를 보여 주는 다이어그램

비고

포크를 만들려면 선택한 프로젝트에 리포지토리 만들기 권한이 있어야 합니다. 모든 참가자에게 리포지토리 만들기 권한이 있는 포크 전용 프로젝트를 만드는 것이 좋습니다.

2단계: 로컬로 포크 복제

포크가 준비되면 명령줄 또는 Visual Studio와 같은 IDE를 사용하여 복제합니다. 포크가 원본 원격이 됩니다.

git clone {your_fork_url}
For convenience, after cloning, you'll want to add the upstream repository (where you forked from) as a remote named upstream:

```bash
git remote add upstream {upstream_url}

3단계: 변경 내용 만들기 및 푸시

기본에서 직접 작업할 수 있습니다. 결국 이 포크는 리포지토리의 복사본입니다. 그러나 다음과 같은 이유로 토픽 분기에서 계속 작업하는 것이 좋습니다.

  • 여러 독립 작업 스트림을 동시에 유지할 수 있습니다.
  • 변경 내용을 포크로 동기화하려는 경우 나중에 혼동을 줄입니다.

평소와 같이 변경 내용을 만들고 커밋합니다. 변경 작업이 완료되면 원본(포크)으로 푸시합니다.

4단계: 끌어오기 요청 만들기 및 완료

포크에서 업스트림 리포지토리로 끌어오기 요청을 엽니다. 모든 정책, 필수 검토자 및 빌드가 업스트림 리포지토리에 적용됩니다. 모든 정책이 충족되면 끌어오기 요청을 완료할 수 있으며 변경 내용은 업스트림 리포지토리의 영구 부분이 됩니다.

PR 만들기 및 완료를 보여 주는 다이어그램

중요합니다

읽기 권한이 있는 사용자는 업스트림으로 끌어오기 요청을 열 수 있습니다. 끌어오기 요청 빌드 파이프라인이 구성된 경우 빌드는 포크에 도입된 코드에 대해 실행됩니다.

5단계: 포크를 최신 버전으로 동기화

끌어오기 요청이 업스트림으로 수락되면 포크가 리포지토리의 최신 상태를 반영하는지 확인해야 합니다.

업스트림의 기본 분기에 따라 다시 지정하는 것이 좋습니다(기본이 기본 개발 분기라고 가정).

git fetch upstream main
git rebase upstream/main
git push origin

포크 워크플로의 이점

분기 워크플로를 사용하면 통합할 준비가 될 때까지 주 리포지토리에서 변경 내용을 격리할 수 있습니다. 준비가 되면 끌어오기 요청을 완료하는 것만큼 쉽게 코드를 통합할 수 있습니다.

이 방법은 다음을 제공합니다.

  • 안전성: 변경 내용은 검토될 때까지 격리됩니다.
  • 공동 작업: 여러 사람이 동시에 다양한 기능을 작업할 수 있습니다.
  • 품질: 모든 변경 내용은 동일한 검토 프로세스를 거집니다.
  • 유연성: 참가자는 주 리포지토리에 대한 쓰기 권한이 필요하지 않습니다.