답변:
GitHub의 모든 브랜치는 포크로 복사됩니다. (분명히 여기에는 GitHub에 푸시되지 않은 브랜치가 포함되지 않습니다.)
그러나 포크는 GitHub-to-GitHub 작업입니다. 아무것도 PC에 복사되지 않습니다. Git clone 과는 다릅니다 . “프로젝트를 복제 할 때 무엇을 복사합니까?”라는 질문을하려면 설명서를 참조하십시오 git-clone(1)
.
이런 식으로 생각하십시오 :
리포지토리 는 하나 또는 여러 지점에 걸친 팀의 공동 작업에 해당합니다. 모든 기고자에게는 고유 한 사본이 있습니다.
메인 리포지토리의 각 포크 는 기고자의 작업에 해당합니다. 포크는 실제로 사용자 계정에 저장소의 복제본을 저장하는 Github (Git 아님) 구문입니다. 복제본은 포크를 만들 때 주 리포지토리의 모든 가지를 포함합니다.
포크 및 / 또는 메인 리포지토리의 각 브랜치 는 작업 방식에 따라 여러 가지 유형에 해당 할 수 있습니다. 각 브랜치는 프로젝트의 버전을 참조 할 수 있지만 핫픽스 나 실험적인 작업과 같은 다양한 개발 채널에 해당 할 수도 있습니다.
GitHub 에코 시스템 의 풀 요청 은 작업에 해당합니다. 격리 된 완료된 작업을 기본 리포지토리에 제공 할 때마다 해당 작업 의 커밋에 해당하는 풀 요청을 만듭니다 . 이 커밋은 내 포크 나 브랜치 에서 메인 리포지토리 로 가져옵니다 .
A는 커밋 코드를 변경의 집합입니다. 이것은 Git에서 가장 흥미로운 것 중 하나입니다. 파일을 전송하지 않고 변경 로그를 전송합니다.
포크는 GitHub 측의 복제본입니다 (모든 것을 복제합니다).
리포지토리를 복제 할 때 모든 리포지토리와 함께 모든 리포지토리의 역사를 얻게됩니다.
이론적 으로 원격 저장소의 기본 분기를 변경할 수 있지만 GitHub 저장소의 복제본은 주로 마스터 분기를 찾습니다. GitHub 클론이 가져올 "기본"브랜치를 변경하려면 마스터 브랜치의 이름을 바꿔야합니다.
Github 웹 사이트에서 프로젝트 포크를 생성하면 업스트림 프로젝트에서 모든 브랜치를 가져옵니다.
새로 발행 된 포크에서 로컬 PC로 복제하는 경우 PC의 origin
리모콘이 Github에서 포크의 마스터 분기를 가리키게됩니다.
이것은 매우 잘 설명 될 수 있습니다. GitHub에 중앙 저장소가 있습니다. 개인 컴퓨터에서 복제본을 가져 와서 일부 변경을 수행 할 때마다 주 저장소의이 로컬 복제본을 포크라고합니다.
지점은 다른 것으로 포크 / 리포에 포함되어 있습니다. 실제로 지점은 다른 개발 단계에서의 작업입니다. 기능 세트를 저장하고, 다른 사용자에게 액세스 권한을 부여하고, 클라이언트에게 사이트를 시연하기 위해 필요한대로 작성됩니다.
지점을 사용할 때와 포크를 사용할 때 의 실제 사례를 공유하고 싶습니다.
우리는 상점에 GitLab을 가지고 있으며 때로는 라 라벨 프로젝트에서 패키지를 다루어야합니다. 우리는 일반적으로 지점을 생성하고 실제 Laravel 프로젝트로 작업 할 때 로컬 VM 개발 환경에서 테스트 한 지점으로 변경 사항을 푸시합니다.
우리 프로젝트가 있다고 가정 해 봅시다.
https://github.com/yardpenalty/mainproject.git
지점 사용법 :
지점이라고합니다 It_doesnt_matter
지점에 생산 방식을 설정하고 나면 마지막으로이 지점에 푸시 하고 병합 요청 을 생성 한 다음 테스트를 위해 UAT로 이동합니다. 테스트가 QC를 통과하면 변경 사항이 프로덕션에 병합됩니다.
병합 로부터 It_doesnt_matter
지점 이 이제 마스터 프로젝트로 푸시됩니다.
...에서 https://github.com/yardpenalty/mainproject.git
패키지 프로젝트가 있다고 가정 해 봅시다.
https://github.com/yardpenalty/mypackage.git
mainproject는 프로덕션에서이 패키지를 사용하므로 다른 이유 때문에이 패키지로 간단히 변경하여 변경할 수는 없습니다. 웹 개발자가이 패키지를 편집하여 프로덕션 환경을 변경해야한다고 가정 해 봅시다.
간단한 분기는 패키지 등을 게시하지 않고 변경 사항을 볼 수 없기 때문에 작동하지 않습니다.
포크 사용법 : 이제 패키지로 약간의 속임수를 써야하므로 포크를 통해 프로덕션 패키지의 복제본을 만듭니다. composer.json 파일은 현재 사용자 또는 그룹 경로 에있는 포크를 가리 키도록 업데이트 할 수 있습니다.
그래서 우리는 포크를 만들 것입니다 https://github.com/yardpenalty/mypackage.git
전화 해 https://github.com/yardpenalty/yards/mypackage.git
이제 우리는 "repositories"에서이 패키지를 가리 키도록 composer.json 파일을 업데이트 할 수 있습니다 .
{
"type": "github",
"url": "https://github.com/yardpenalty/yard/mypackage.git"
}
]