[github] github의 포크와 분기의 차이점

github에서 호스팅되는 프로젝트를 포크하면. 모든 가지를 포크합니까? 내 포크가 어떤 브랜치를 기반으로하는지 어떻게 알 수 있습니까? 다시 말해 어떤 분기가 내 PC로 다운로드됩니까?



답변

GitHub의 모든 브랜치는 포크로 복사됩니다. (분명히 여기에는 GitHub에 푸시되지 않은 브랜치가 포함되지 않습니다.)

그러나 포크는 GitHub-to-GitHub 작업입니다. 아무것도 PC에 복사되지 않습니다. Git clone 과는 다릅니다 . “프로젝트를 복제 할 때 무엇을 복사합니까?”라는 질문을하려면 설명서를 참조하십시오 git-clone(1).


답변

이런 식으로 생각하십시오 :

리포지토리 는 하나 또는 여러 지점에 걸친 팀의 공동 작업에 해당합니다. 모든 기고자에게는 고유 한 사본이 있습니다.

메인 리포지토리의 각 포크 는 기고자의 작업에 해당합니다. 포크는 실제로 사용자 계정에 저장소의 복제본을 저장하는 Github (Git 아님) 구문입니다. 복제본은 포크를 만들 때 주 리포지토리의 모든 가지를 포함합니다.

포크 및 / 또는 메인 리포지토리의 각 브랜치 는 작업 방식에 따라 여러 가지 유형에 해당 할 수 있습니다. 각 브랜치는 프로젝트의 버전을 참조 할 수 있지만 핫픽스 나 실험적인 작업과 같은 다양한 개발 채널에 해당 할 수도 있습니다.

GitHub 에코 시스템 의 풀 요청 은 작업에 해당합니다. 격리 된 완료된 작업을 기본 리포지토리에 제공 할 때마다 해당 작업 의 커밋에 해당하는 풀 요청을 만듭니다 . 이 커밋은 내 포크브랜치 에서 메인 리포지토리 로 가져옵니다 .

A는 커밋 코드를 변경의 집합입니다. 이것은 Git에서 가장 흥미로운 것 중 하나입니다. 파일을 전송하지 않고 변경 로그를 전송합니다.


답변

포크는 GitHub 측의 복제본입니다 (모든 것을 복제합니다).
리포지토리를 복제 할 때 모든 리포지토리와 함께 모든 리포지토리의 역사를 얻게됩니다.

이론적 으로 원격 저장소의 기본 분기를 변경할 수 있지만 GitHub 저장소의 복제본은 주로 마스터 분기를 찾습니다. GitHub 클론이 가져올 “기본”브랜치를 변경하려면 마스터 브랜치의 이름을 바꿔야합니다.


답변

프로젝트를 포크하면 전체 프로젝트를 git hub 계정으로 복사합니다. 당신은 당신의 PC에 아무것도 대처하고 있지 않습니다

PC에 사본을 만들려면 복제하고 모든 것을 가져와야하며 해당 프로젝트의 모든 분기 및 코드를 얻습니다.


답변

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"
 }

]