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