프로젝트의 포크를 수행하는 것과 프로젝트를 수행하는 clone
것의 차이점을 알고 싶습니다 .
프로젝트를 분기 한 경우 GitHub를 통해서만 풀 요청을 보낼 수 있습니까?
프로젝트의 포크를 수행하는 것과 프로젝트를 수행하는 clone
것의 차이점을 알고 싶습니다 .
프로젝트를 분기 한 경우 GitHub를 통해서만 풀 요청을 보낼 수 있습니까?
답변:
기본적으로 그렇습니다. A fork
는 GitHub가 프로젝트를 복제하고 사용자 이름으로 등록하도록 요청하는 것입니다 . GitHub는 또한 두 리포지토리 간의 관계를 추적하므로 두 프로젝트 (및 기타 포크) 간의 커밋 및 풀을 시각화 할 수 있습니다.
사용하지 않더라도 복제 된 저장소에서 사람들이 가져 오기를 계속 요청할 수 fork
있지만 공개적으로 사용할 수 있도록해야합니다. 또는 개발자 git format-patch
가 자신의 나무에 적용 할 수있는 패치를 보내십시오 (참조 ).
git pull
. 포크는 여러 명령을 수행합니다. 그리고 내가 본 거의 모든 포크가 구식입니다. 포크는 스테로이드의 Maven 저장소 문제와 같습니다. 오래된 레포 (Maven) 대신 수천 개 (Git)가 있습니다.
git pull
는 여전히 존재하는 일종의 관계가 있습니다. 전체 복사본을 자신의 로컬 컴퓨터에 복사하고 원본 리포지토리에서 분리 한 경우.
저장소를 포크 한다고 말하면 기본적으로 GitHub ID 아래에 저장소 사본이 작성됩니다. 여기서 주목할 점은 원래 리포지토리에 대한 모든 변경 사항이 포크 리포지토리에 다시 반영된다는 것입니다 (가져와 리베이스해야 함). 그러나 분기 저장소를 변경 하면 원래 저장소에 대한 풀 요청을 명시 적으로 작성해야 합니다. 풀 요청이 원래 저장소 의 관리자에 의해 승인되면 변경 사항이 기존의 원래 코드 기반 과 커미트 / 병합됩니다 . 그때까지 변경 사항은 포크 한 사본에만 반영 됩니다 .
한마디로 :
포크 앤 풀 모델을 사용하면 누구나 기존 리포지토리를 포크하고 소스 리포지토리에 대한 액세스 권한을 부여하지 않고도 개인 포크에 변경 사항을 푸시 할 수 있습니다. 그런 다음 프로젝트 관리자가 변경 사항을 소스 저장소로 가져와야합니다.
포크 한 후에는 저장소 (이름 아래에있는 저장소)를 머신에서 로컬로 복제 할 수 있습니다. 변경 후 분기 저장소로 푸시하십시오. 그러나 원래 저장소에서 변경 사항을 반영하려면 풀 요청이 승인되어야합니다.
다른 흥미로운 토론의 몇 가지-
복제본은 저장소의 두 버전 (아마도 다른 버전)을 적절히 복제하고 분리하는 곳입니다. 한 리포지토리가 수정되면 푸시 명령을 사용하여 새 컨텐츠를 다른 리포지토리에 적극적으로 복사해야합니다. 그리고 다른 저장소의 변경 사항을 가져 왔습니다.
서버에서 저장소를 포크 할 때 두 저장소 모두 동일한 서버에서 동일한 [고정 오브젝트] 컨텐츠를 사용하므로 컨텐츠 복제가 필요하지 않습니다. '트릭'은 서로 다른 사용자 관점을 관리하여 각 사용자가 자신의 레포에 대한 전체 개인 사본을 가지고 있다고 믿습니다. 포크 사이의 푸시 및 페치는 단순히 사용자의 포인터를 업데이트합니다.
하위 레벨에서 git은 내부적으로 동일한 작업을 수행합니다. 각각 Hello World
에을 포함하는 세 개의 다른 파일이있는 경우 git은 Hello World blob의 단일 사본을 '포크'하고 필요에 따라 세 곳 각각에 파일을 제공합니다.
서버에서 포크 기능을 사용하면 모든 바디가 하나의 기본 리포지토리를 공유하므로 Github의 대용량 스토리지 허용량이 평균적으로 크지 않습니다.
@AniketThakur의 답변은 매우 좋습니다. 아직 다음 질문에 아무도 답변하지 않았습니다.
프로젝트를 분기 한 경우 GitHub를 통해서만 풀 요청을 보낼 수 있습니까?
아니요. 저장소에 기고자 인 경우 다음을 수행 할 수 있습니다. 로컬 복제본을 만듭니다. 현지 지사를 만듭니다. 해당 분기에 커밋을 추가하십시오. 로컬 브랜치를 github로 다시 푸시하십시오 (프로세스에서 원격 브랜치를 생성). 해당 브랜치가 마스터 브랜치 (또는 원하는 브랜치)로 병합되도록 요청하는 풀 요청을 작성하십시오.
GitHub의 또 다른 이상한 미묘한 차이점은 변경 사항을 원래 리포지토리로 가져올 때까지 포크 변경 사항이 활동 로그에 포함되지 않는다는 것입니다. 또한 포크를 적절한 클론으로 변경하려면 Github 지원 센터에 문의해야합니다.
에서 왜 내 기여는 표시되지 않습니다 :
커밋은 포크로 만들어졌습니다.
포크로 만든 커밋은 귀하의 기부금에 포함되지 않습니다. 계산하려면 다음 중 하나를 수행해야합니다.
풀 요청 을 열어 변경 사항을 상위 저장소에 병합하십시오. 포크를 분리하여 GitHub의 독립형 저장소로 바꾸려면 GitHub 지원 센터에 문의하십시오 . 포크에 자체 포크가있는 경우, 포크를 저장소와 함께 새 네트워크로 이동해야하는지 또는 현재 네트워크에 남아 있는지 지원 부서에 알려주십시오. 자세한 내용은 " 포크 정보"를 참조하십시오 .