포크 정보
다른 사람의 프로젝트에 기여하고 싶지만 직접 변경할 수 있는 권한이 없는 경우 프로젝트의 복사본을 직접 만들고, 업데이트를 만든 다음, 기본 프로젝트에 포함하도록 해당 업데이트를 제안할 수 있습니다. 이 프로세스를 “포크 및 끌어오기 요청” 워크플로라고도 합니다.
프로젝트의 고유한 복사본(또는 “포크”)을 만들 때 원래 프로젝트와 코드를 공유하는 새 작업 영역을 만드는 것과 같습니다. 이는 오픈 소스 프로젝트 또는 원래 프로젝트에 대한 쓰기 권한이 없는 경우에 유용합니다.
복사본에 변경 내용을 적용한 후 끌어오기 요청으로 제출할 수 있습니다. 이는 기본 프로젝트에 변경 내용을 다시 제안하는 방법입니다. 자세한 내용은 "리포지토리 포크"을(를) 참조하세요.
프로젝트의 고유한 복사본 만들기
이 자습서에서는 포크 및 끌어오기 요청 워크플로를 테스트할 수 있는 GitHub에서 호스트되는 테스트 리포지토리인 Spoon-Knife 프로젝트를 사용합니다.
-
https://github.com/octocat/Spoon-Knife에서
Spoon-Knife
프로젝트로 이동합니다. -
페이지의 오른쪽 상단에서 Fork(포크)를 클릭합니다.
-
"소유자"에서 드롭다운 메뉴를 선택하고 포크된 리포지토리의 소유자를 선택합니다.
Note
사용자 이름이 회색으로 표시되면 포크가 이미 있기 때문입니다. 대신 기존 포크를 최신 상태로 유지해야 합니다. 자세한 내용은 "포크 동기화"을(를) 참조하세요.
-
기본적으로 포크의 이름은 업스트림 리포지토리와 동일합니다. 필요에 따라 포크를 더 구분하려면, "리포지토리 이름" 필드에 이름을 입력합니다.
-
필요에 따라 ‘설명’ 필드에 포크 설명을 입력합니다.
-
필요에 따라 DEFAULT 분기만 복사를 선택합니다.
오픈 소스 프로젝트에 기여하는 것과 같은 많은 포크 시나리오의 경우 기본 분기만 복사하면 됩니다. 이 옵션을 선택하지 않으면, 모든 분기가 새 포크로 복사됩니다.
-
포크 만들기를 클릭합니다.
Note
업스트림 리포지토리에서 추가 분기를 복사하려는 경우 분기 페이지에서 복사할 수 있습니다. 자세한 내용은 "리포지토리 내에서 분기 만들기 및 삭제"을(를) 참조하세요.
컴퓨터에 포크 복제
Spoon-Knife 리포지토리를 성공적으로 포크했지만 지금까지는 포크가 GitHub Enterprise Server에만 존재합니다. 프로젝트에서 사용하려면 이를 컴퓨터에 복제해야 합니다.
명령줄, GitHub CLI 또는 GitHub Desktop을 사용하여 포크를 복제할 수 있습니다.
-
GitHub Enterprise Server에서 Spoon-Knife 리포지토리의 포크로 이동합니다.
-
파일 목록 위에서 코드를 클릭합니다.
-
리포지토리의 URL을 복사합니다.
-
HTTPS를 사용하여 리포지토리를 복제하려면 "HTTPS"에서 을 클릭합니다.
-
조직의 SSH 인증 기관에서 발급한 인증서를 포함하여 SSH 키를 사용하여 리포지토리를 복제하려면 SSH를 클릭한 다음, 을 클릭합니다.
-
GitHub CLI를 사용하여 리포지토리를 복제하려면 GitHub CLI 를 클릭한 다음, 을 클릭합니다.
-
-
Terminal(터미널)Terminal(터미널)Git Bash를 엽니다.
-
현재 작업 디렉터리를 복제 대상 디렉터리의 위치로 변경합니다.
-
git clone
을 입력한 다음 이전에 복사한 URL을 붙여넣습니다. 그러면 다음과 같이 되며, 여기서YOUR-USERNAME
대신 GitHub Enterprise Server 사용자 이름을 사용합니다.git clone https://HOSTNAME/YOUR-USERNAME/Spoon-Knife
-
Enter 키를 누릅니다. 로컬 복제본이 만들어집니다.
$ git clone https://HOSTNAME/YOUR-USERNAME/Spoon-Knife > Cloning into `Spoon-Knife`... > remote: Counting objects: 10, done. > remote: Compressing objects: 100% (8/8), done. > remove: Total 10 (delta 1), reused 10 (delta 1) > Unpacking objects: 100% (10/10), done.
Note
GitHub CLI에 대한 자세한 내용은 "GitHub CLI 정보"을 참조하세요.
포크의 복제본을 만들려면 --clone
플래그를 사용합니다.
gh repo fork REPOSITORY --clone=true
-
파일 메뉴에서 리포지토리 복제를 클릭합니다.
-
복제하려는 리포지토리의 위치에 해당하는 탭을 클릭합니다. URL을 클릭하여 리포지토리 위치를 수동으로 입력할 수도 있습니다.
-
리포지토리 목록에서 복제할 리포지토리를 클릭합니다.
-
리포지토리를 복제할 로컬 디렉터리를 선택하려면 "로컬 경로" 필드 옆에 있는 선택… 을 클릭하고 디렉터리로 이동합니다.
-
"리포지토리 복제" 창 아래쪽에서 복제를 클릭합니다.
작업할 분기 만들기
프로젝트를 변경하기 전에 새 분기를 만들고 체크 아웃해야 합니다. 자체 분기의 변경 내용을 유지하여 GitHub 흐름을 따르고 나중에 동일한 프로젝트에 더 쉽게 기여할 수 있는지 확인합니다. "GitHub 흐름" 항목을 참조하세요.
git branch BRANCH-NAME
git checkout BRANCH-NAME
git branch BRANCH-NAME
git checkout BRANCH-NAME
GitHub Desktop에서 분기를 만들고 관리하는 방법에 대한 자세한 내용은 "GitHub Desktop에서 분기 관리하기" 항목을 참조하세요.
변경 내용 만들기 및 푸시
Visual Studio Code과(와) 같이 즐겨찾는 텍스트 편집기를 사용하여 프로젝트 내용을 몇 가지 변경합니다. 예를 들어 index.html
에서 텍스트를 변경하여 GitHub 사용자 이름을 추가할 수 있습니다.
변경 내용을 제출할 준비가 되면 변경 내용을 스테이징하고 커밋합니다. git add .
는 Git에 다음 커밋에 모든 변경 내용을 포함하도록 지시합니다. git commit
은 변경 내용의 스냅샷을 만듭니다.
git add .
git commit -m "a short description of the change"
git add .
git commit -m "a short description of the change"
GitHub Desktop에서 변경 내용을 스테이징하고 커밋하는 방법에 대한 자세한 내용은 "GitHub Desktop에서 프로젝트 변경 내용 커밋 및 검토" 항목을 참조하세요.
파일을 스테이징하고 커밋하면 Git에 "좋아, 내 변경 사항의 스냅샷을 만들어 줘"라고 전달하는 셈입니다. 계속해서 더 많은 변경을 수행하고 더 많은 커밋 스냅샷을 만들 수 있습니다.
현재, 변경 내용은 로컬에만 존재합니다. GitHub Enterprise Server까지 변경 내용을 푸시할 준비가 되면 변경 내용을 원격으로 푸시합니다.
git push
git push
GitHub Desktop에서 변경 내용을 푸시하는 방법에 대한 자세한 내용은 "GitHub Desktop에서 GitHub에 변경 내용 푸시하기" 항목을 참조하세요.
끌어오기 요청
이제 기본 프로젝트에 변경 내용을 제안할 준비가 완료되었습니다. 이는 다른 사람의 프로젝트의 포크를 생성하는 마지막 단계이며 틀림없이 가장 중요합니다. 커뮤니티 전체에 도움이 될 것이라고 생각하는 변경을 수행한 경우에는 분명히 다시 기여하는 것을 고려해야 합니다.
이렇게 하려면 프로젝트가 있는 GitHub Enterprise Server의 리포지토리로 이동합니다. 이 예시에서는 이 리포지토리가 https://github.com/<your_username>/Spoon-Knife
에 있습니다. octocat:main
의 앞에 분기가 앞에 하나의 커밋임을 나타내는 배너가 표시됩니다. Contribute(기여), Open a pull request(끌어오기 요청 열기)를 클릭합니다.
GitHub Enterprise Server를 통해 포크와 octocat/Spoon-Knife
리포지토리 간의 차이점을 보여 주는 페이지로 이동합니다. [끌어오기 요청 만들기] 를 클릭합니다.
GitHub Enterprise Server를 통해 변경 내용에 대한 제목과 설명을 입력할 수 있는 페이지로 이동합니다. 처음에 이 끌어오기 요청을 만드는 이유에 대한 유용한 정보와 근거를 최대한 제공하는 것이 중요합니다. 변경 내용이 생각만큼 모든 사람에게 유용한지 프로젝트 소유자가 확인할 수 있어야 합니다. 마지막으로, Create pull request(끌어오기 요청 만들기)를 클릭합니다.
피드백 관리
끌어오기 요청은 Discussion의 영역입니다. 프로젝트 소유자가 끌어오기 요청을 거부하거나 끌어오기 요청이 만들어진 이유에 대한 자세한 정보를 요청하는 경우 불쾌해하지 마세요. 프로젝트 소유자가 끌어오기 요청을 병합하지 않도록 선택하더라도 변경 내용은 포크에 계속 존재합니다. 포크가 원래 프로젝트보다 훨씬 더 가치 있다고 생각하는 사람도 있을 수 있습니다.
프로젝트 찾기
리포지토리를 성공적으로 포크하고 다시 기여했습니다. 나아가서 좀 더 기여하세요!