깃 포크는 실제로 깃 클론입니까?
사람들이 Git에서 코드를 위조한다고 말하는 것을 계속 듣습니다.Git "fork"는 Git "clone"과 미래의 합병을 포기하려는 일부(의미 없는) 심리적 의지처럼 의심스럽게 들립니다.Git에는 포크 명령어가 없죠?
깃허브는 서신을 스테이플러로 고정함으로써 포크를 조금 더 실제적으로 만듭니다.즉, 포크 버튼을 누르면 나중에 꺼내기 요청 버튼을 누르면 시스템이 소유자에게 이메일을 보낼 수 있을 정도로 똑똑합니다.따라서 저장소 소유권과 사용 권한을 둘러싼 약간의 춤입니다.
네/아니요? 깃허브가 깃을 이 방향으로 확장하는 것에 대해 불안한 점은 없습니까?아니면 Git이 그 기능을 흡수했다는 소문이 있습니까?
GitHub 맥락에서 포크는 Git를 확장하지 않습니다.
서버 측에서만 복제를 허용합니다.
로컬 워크스테이션에서 GitHub 리포지토리를 복제할 때 "기여자"로 명시적으로 선언되지 않으면 업스트림 리포지토리에 다시 기여할 수 없습니다.이는 복제본이 해당 프로젝트의 별도 인스턴스이기 때문입니다.프로젝트에 참여하려면 다음과 같은 방법으로 포크를 사용하여 프로젝트를 수행할 수 있습니다.
- GitHub 계정의 GitHub 저장소를 복제합니다(서버 측의 복제품인 "포크" 부분).
- 해당 GitHub 저장소에 커밋 제공(사용자의 GitHub 계정에 있으므로 해당 저장소에 적용할 수 있는 모든 권한이 있음
- 흥미로운 기여를 원래 GitHub 저장소에 다시 전달합니다(자신의 GitHub 저장소에서 변경한 내용을 통해 "풀 요청" 부분).
"Collaborative GitHub Workflow"도 선택합니다.
원래 리포지토리(업스트림이라고도 함)와 연결을 유지하려면 원래 리포지토리를 참조하는 원격을 추가해야 합니다.
GitHub의 오리진과 업스트림의 차이점은 무엇입니까?를 참조하십시오.
또한 Git 2.20(2018년 4분기) 등을 사용하면 델타 섬을 사용하여 포크에서 가져오는 것이 더 효율적입니다.
사람들이 코드를 위조하고 있다고 말하는 것을 계속 듣습니다.Git "fork"는 Git "clone"과 미래의 합병을 포기하려는 (의미 없는) 심리적 의지와 같이 의심스럽게 들립니다.git에는 포크 명령어가 없죠?
"포킹"은 개념이지 버전 제어 시스템에서 특별히 지원하는 명령이 아닙니다.
가장 간단한 종류의 포크는 분기와 동의어입니다.VCS에 관계없이 분기를 생성할 때마다 "포킹"이 발생합니다.이 포크들은 보통 다시 합쳐지기 쉽습니다.
다른 당사자가 코드의 전체 복사본을 가져가고 떠나는 포크와 같은 종류의 포크는 반드시 VCS 외부에서 Subversion과 같은 중앙 집중식 시스템에서 발생합니다.Git와 같은 분산 VCS는 전체 코드베이스를 포킹하고 새 프로젝트를 효과적으로 시작할 수 있도록 훨씬 더 나은 지원을 제공합니다.
Git(GitHub가 아님)는 기본적으로 다음과 같은 두 가지 방법으로 전체 레포를 "분쇄"(즉, 복제)할 수 있습니다.
- 는 때원서제라는 이 있습니다.
origin
를 위해 되었습니다. - 는 해당 분기의 " " " " " " 을 합니다.
origin
- 포크한 원래 프로젝트에서 변경 사항을 가져오고 병합하는 것은 매우 쉽습니다.
Git는 원래 프로젝트의 다른 사람에게 당신에게서 끌어오라고 요청하거나 변경사항을 밀어내기 위해 쓰기 권한을 요청하는 것처럼 포크의 소스에 기여하는 변경사항을 다시 만듭니다.이것은 GitHub이 더 쉽게 만들고 표준화하는 부분입니다.
기트허브가 이 방향으로 기지를 확장하는 것에 대한 불안감은 없습니까?아니면 Git이 기능을 흡수한다는 소문이 있습니까?
당신의 가정이 틀려서 불안할 것이 없습니다.GitHub은 멋진 GUI와 표준화된 풀 요청 발행 방법으로 Git의 포크 기능을 "확장"하지만 Git에 기능을 추가하지는 않습니다.완전 리포포포킹의 개념은 기본적인 수준에서 분산 버전 제어로 바로 구워집니다.언제든지 GitHub을 포기할 수 있으며 여전히 "forked"한 프로젝트를 계속 밀고 당길 수 있습니다.
네, 포크는 복제품입니다.다른 사람의 허락 없이 다른 사람의 복사본으로 밀어 넣을 수 없기 때문에 발생했습니다.그들은 당신을 위해 (포크) 복사본을 만들고, 거기서 당신은 또한 쓰기 권한을 갖게 될 것입니다.
나중에 실제 소유자나 다른 사용자가 변경 사항과 같은 포크를 사용하면 자신의 저장소로 다시 가져올 수 있습니다.또는 "Pull-Request"를 보낼 수 있습니다.
이 맥락에서 "Fork"는 "내가 내 수정사항을 추가할 수 있도록 그들의 코드를 복사하라"를 의미합니다.더 이상 할 말이 없습니다.모든 복제품은 본질적으로 포크이며, 포크에서 변화를 끌어낼지 여부는 원래의 것에 달려 있습니다.
복제에는 Git 저장소의 복사본을 로컬 시스템에 만드는 작업이 포함되며, 포킹은 저장소를 다른 저장소로 복제합니다.복제는 개인 용도로만 사용할 수 있지만(향후 병합이 발생할 수도 있음), 포킹을 사용하여 가능한 새 프로젝트 경로를 복사하고 엽니다.
포크는 다른 저장소의 복사본이지만 당신의 계정이 수정된 것 같습니다.예를 들어 다른 리포지토리를 로컬로 직접 복제하는 경우 원격 개체 원본은 복제할 원본 계정을 계속 사용합니다.코드를 커밋하고 기여할 수 없습니다.그것은 단지 코드의 순수한 복사일 뿐입니다.그렇지 않으면 리포지토리를 포크하면 github 계정의 계정 설정 업데이트와 함께 repo가 복제됩니다.그런 다음 계정의 맥락에서 레포를 복제하면 코드를 커밋할 수 있습니다.
포킹은 당신이 어떤 프로젝트에 기여하기로 결정했을 때 이루어집니다.전체 프로젝트의 기록 로그와 함께 전체 프로젝트의 복사본을 만들 수 있습니다.이 복사본은 전적으로 리포지토리에서 만들어지며, 변경한 후에는 꺼내기 요청을 발행합니다.이제 풀 요청을 수락하고 변경 사항을 원래 코드에 통합하는 것은 소스의 소유자에게 달려 있습니다.
Git clone은 사용자가 소스의 복사본을 가져올 수 있는 실제 명령입니다.gitclone [URL]을(를) 생성하면 [URL]의 복사본이 로컬 저장소에 생성됩니다.
여기에 "포크"가 무엇인지에 대한 오해가 있습니다.포크는 사실상 사용자별 분기 집합에 불과합니다.포크를 누르면 원래 리포지토리가 유일하기 때문에 실제로 원래 리포지토리로 푸시됩니다.
포크로 밀어넣고 커밋을 기록한 다음 원래 리포지토리로 이동하여 커밋 ID를 사용하면 커밋이 원래 리포지토리에 있는 것을 확인할 수 있습니다.
이것은 많은 말이 되지만, 명백한 것과는 거리가 멀다 (나는 최근에 우연히 이것을 발견했습니다).
John이 저장소 SuperProject를 포크할 때 실제로 발생하는 것처럼 보이는 것은 원본 저장소의 모든 분기가 "John.master", "John.new_gui_project" 등의 이름으로 복제되는 것입니다.
깃허브는 우리로부터 "존"을 "숨기고" 우리에게 깃허브의 저장소에 대한 우리만의 "복사본"이 있다고 착각하게 하지만, 우리는 그렇지 않고 심지어 필요하지도 않습니다.
그래서 제 포크의 브랜치 "master"는 실제로 "Korporal.master"로 명명되었지만 GitHub UI는 이를 절대 공개하지 않고 저에게 "master"만 보여줍니다.
제가 최근에 했던 일들을 바탕으로 볼 때, 이것은 제가 생각하기에 꽤 괜찮은 디자인이라고 생각합니다.
이러한 이유로 Microsoft는 Visual Studio Team Services 제품에 Gitforks를 구현하는 것이 매우 쉬울 것이라고 생각합니다.
복제가 서버에서 시스템으로 이동하고 포킹이 서버 자체에 복사본을 만드는 것이라는 사실을 제외하고, 중요한 차이점은 복제할 때 실제로 모든 분기, 레이블 등을 가져온다는 것입니다.
그러나 포크를 사용할 때는 마스터 브랜치에 있는 현재 파일만 가져옵니다.이것은 우리가 다른 지점 등을 얻지 못한다는 것을 의미합니다.
따라서 무언가를 원래 리포지토리로 다시 병합해야 하는 경우 리포지토리 간 병합이므로 더 높은 권한이 필요합니다.
포크는 Git의 명령어가 아닙니다. GitHub이 구현하는 개념일 뿐입니다.Git는 마스터 복사본과 동기화할 필요 없이 피어 투 피어 환경에서 작동하도록 설계되었습니다.서버는 다른 피어에 불과하지만 마스터 복사본으로 간주됩니다.
간단히 말하면,
리포지토리를 포킹한다고 하면 기본적으로 GitHub 계정의 GitHub ID 아래에 원본 리포지토리의 복사본을 만드는 것입니다.
그리고.
리포지토리를 복제한다고 하면 GitHub 계정에 복사본이 없는 상태에서 시스템(PC/노트북)에 원본 리포지토리의 로컬 복사본을 직접 만드는 것입니다.
언급URL : https://stackoverflow.com/questions/6286571/are-git-forks-actually-git-clones
'programing' 카테고리의 다른 글
Cordova: 특정 iOS 에뮬레이터 이미지 시작 (0) | 2023.06.03 |
---|---|
pk 설치 시 INSTALL_FAILED_NO_MATCHING_ABIS (0) | 2023.06.03 |
레일 4 인증 토큰 (0) | 2023.06.03 |
문자열에서 캐리지 리턴 제거 (0) | 2023.06.03 |
루비 모듈에서 인스턴스 메소드를 포함하지 않고 호출할 수 있습니까? (0) | 2023.06.03 |