포크 워크플로 구현

완료됨

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

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

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

포크는 이너 소스 워크플로를 지원하는 좋은 방법입니다. 원본 프로젝트에 직접 쓸 수 있는 권한이 없는 경우 포크를 만들어 변경 사항을 제안할 수 있습니다.

변경 사항을 공유할 준비가 되면 끌어오기 요청을 사용하여 간편하게 다시 기여할 수 있습니다.

포크에는 무엇이 들어 있나요?

포크는 업스트림(원본) 리포지토리의 모든 콘텐츠에서 시작됩니다.

포크를 만드는 경우 모든 분기를 포함하거나 기본 분기로만 제한할 수 있습니다.

권한, 정책 또는 빌드 파이프라인은 적용되지 않습니다.

새 포크는 누군가가 원본 리포지토리를 복제한 다음, 비어 있는 새 리포지토리로 푸시하는 것처럼 작동합니다.

포크를 만든 후에는 PR(끌어오기 요청)에서 이를 전달하지 않는 한 리포지토리 간 새 파일, 폴더, 분기가 공유되지 않습니다.

포크 간 코드 공유

PR은 포크에서 업스트림 또는 업스트림에서 포크와 같이 양방향으로 만들 수 있습니다.

가장 일반적인 방식은 포크에서 업스트림으로 접근하는 것입니다.

대상 리포지토리의 권한, 정책, 빌드, 작업 항목이 PR에 적용됩니다.

분기와 포크 중에서 선택

소규모 팀(2~5명의 개발자)의 경우 단일 리포지토리로 작업하는 것이 좋습니다.

모든 사람이 토픽 분기에서 작업해야 하고 기본은 분기 정책으로 보호해야 합니다.

팀이 성장하면 이러한 방식이 부족하다고 느낄 수 있으며 포크 워크플로로 전환하는 것을 선호할 수도 있습니다.

리포지토리에 일상적이거나 자주 발생하지 않는 커밋(예: 오픈 소스 프로젝트)이 있는 경우 포크 워크플로를 선택하는 것이 좋습니다.

일반적으로 프로젝트에 대한 핵심 기여자에게만 리포지토리에 직접 커밋할 권한이 있습니다.

이는 핵심 사용자 집합의 외부에 있는 협력자에게 리포지토리의 포크에서 작업하도록 요청하는 경우 도움이 됩니다.

또한 작업을 점검할 기회가 생길 때까지 해당 변경 사항을 격리합니다.

포크 워크플로

  • 포크를 만듭니다.
  • 로컬로 복제합니다.
  • 로컬에서 변경하고 분기로 푸시합니다.
  • 업스트림에 대한 PR을 만들고 완료합니다.
  • 포크를 업스트림에서 최신으로 동기화합니다.

포크 만들기

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

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

참고 항목

포크를 만들려면 선택한 프로젝트에 대한 리포지토리 만들기 권한이 있어야 합니다. 모든 기여자에게 리포지토리 만들기 권한이 있는 포크 전용 프로젝트를 만드는 것이 좋습니다. 리포지토리 권한을 부여하는 예는 Git 리포지토리 권한 설정을 참조하세요.

로컬로 포크 복제

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

편의상 복제 후 업스트림 리포지토리(포크한 위치)를 업스트림이라는 이름의 원격으로 추가하는 것이 좋습니다.

git remote add upstream {upstream_url}

변경 사항 적용 및 푸시

해당 포크는 리포지토리의 복사본이므로 기본에서 직접 작업할 수 있지만

계속 토픽 분기에서 작업하는 것이 좋습니다.

여러 독립적인 작업을 동시에 유지 관리할 수 있습니다.

또한 변경 사항을 포크로 동기화하려는 경우 나중에 혼동을 줄일 수 있습니다.

평소처럼 변경하고 커밋합니다. 변경 작업이 완료되면 원본(포크)으로 푸시합니다.

PR 만들기 및 완료

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

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

Important

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

포크를 최신 상태로 동기화

PR이 업스트림에 수락된 경우 포크가 리포지토리의 최신 상태를 반영하는지 확인하는 것이 좋습니다.

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

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

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