programing

포크 대.깃허브에 분기

stoneblock 2023. 6. 3. 08:08

포크 대.깃허브에 분기

깃허브 프로젝트의 분기를 만드는 것과 비교하여 깃허브 프로젝트를 만드는 것의 장점과 단점에 대해 자세히 알고 싶습니다.

포킹은 제가 원래 프로젝트의 공동작업자 목록에 있을 필요가 없기 때문에 제 버전의 프로젝트를 원래 프로젝트와 더 격리시킵니다.우리는 사내에서 프로젝트를 개발하고 있기 때문에 사람을 협력자로 추가하는 데 문제가 없습니다.그러나 프로젝트를 포킹하면 메인 프로젝트에 대한 병합 변경이 더 어려워질 수 있는지 알고 싶습니다.즉, 분기를 통해 두 프로젝트의 동기화를 쉽게 유지할 수 있는지 궁금합니다.즉, 분기할 때 내 버전의 메인 프로젝트와 메인 프로젝트 간의 변경 사항을 병합하고 푸시하는 것이 더 쉬운가요?

특정 프로젝트에 대한 공동작업자로 등록되지 않았기 때문에 분기를 만들거나 기존 분기를 풀링한 후 다시 밀어넣을 수 없습니다.

포킹은 GitHub 서버 측에서 클론에 불과합니다.

  • 직접적으로 뒤로 밀 수 있는 가능한.
  • 병합 요청을 관리하기 위해 포크 대기열 기능이 추가되었습니다.

포크를 원래 프로젝트와 동기화하는 방법은 다음과 같습니다.

  • 원래 프로젝트를 원격으로 추가
  • 원래 프로젝트에서 정기적으로 가져오기
  • 해당 가져오기에서 업데이트한 관심 분기 위에 현재 개발 내용을 다시 작성합니다.

기본 재배치를 사용하면 변경 사항이 직접적인지 확인할 수 있으며(처리할 병합 충돌이 없음), 원래 프로젝트의 유지 관리자가 자신의 프로젝트에 패치를 포함하기를 원할 때 요청을 더 쉽게 풀링할 수 있습니다.

목표는 직접 참여가 항상 가능하지는 않지만 협업을 허용하는 것입니다.


GitHub 측에서 복제한다는 것은 이제 두 개의 "중앙" 저장소("여러 공동 작업자가 볼 수 있는 중앙")를 갖게 되었다는 것을 의미합니다.
프로젝트의 공동작업자로 직접 추가할 수 있는 경우 포크로 다른 프로젝트를 관리할 필요가 없습니다.

깃허브의 포크

병합 경험은 거의 비슷하지만 간접적인 수준이 추가됩니다(포크에서 먼저 누른 다음 당기기를 요청합니다. 원래 레포에서 빠르게 진행되는 병합이 더 이상 진행되지 않게 될 위험이 있습니다.).
, 올바른 , 올른워로는우플입니다.git pull --rebase upstream로 함), 그 에 (업스트림새커작기함로다음으본그을런업의위밋에▁(다▁on업음▁work),함그▁(),▁from▁your▁and▁thenreb런▁commits▁new),git push --force origin사용자 자신의 커밋이 항상 원본(기본) 레포의 커밋 위에 있는 방식으로 기록을 다시 작성하기 위해.

참고 항목:

다음은 높은 수준의 차이점입니다.

포크링

장점

  • 사용자별로 분기를 구분합니다.
  • 운영 저장소의 혼란 감소
  • 팀 프로세스는 외부 기여자 프로세스를 반영합니다.

단점

  • 활성(또는 비활성) 상태인 모든 분기를 보기 어렵게 합니다.
  • 지점에서 협업하는 것이 더 까다롭습니다(포크 소유자는 사용자를 공동작업자로 추가해야 함).
  • Git에서 다중 원격의 개념을 이해해야 합니다.
    • 추가적인 정신적 부기가 필요합니다.
    • 이것은 Git에 매우 편안하지 않은 사람들에게 워크플로우를 더 어렵게 만들 것입니다.

가지치기

장점

  • 프로젝트와 관련하여 수행되는 모든 작업을 한 곳에서 유지합니다.
  • 모든 공동작업자가 동일한 지점으로 이동하여 공동작업 가능
  • 처리할 Git 리모컨은 하나뿐입니다.

단점

  • 버려지는 나뭇가지는 더 쉽게 쌓일 수 있습니다.
  • 팀 기여 프로세스가 외부 기여자 프로세스와 일치하지 않습니다.
  • 팀 구성원을 분기하려면 먼저 팀 구성원을 기여자로 추가해야 합니다.

그것은 Git의 일반적인 작업 흐름과 관련이 있습니다.기본 프로젝트의 리포지토리에 직접 푸시할 수는 없습니다.예를 들어 GitHub 프로젝트의 저장소가 다른 사용자에게 마스터 분기로 푸시할 수 있는 권한을 부여하고 싶지 않기 때문에 분기 기반 액세스 제어를 지원하는지 확신할 수 없습니다.

일반적인 패턴은 다음과 같습니다.

  • 원본 프로젝트의 리포지토리를 포크하여 자신의 GitHub 복사본을 갖게 하고, 여기에 변경사항을 푸시할 수 있습니다.
  • GitHub 저장소를 로컬 컴퓨터에 복제합니다.
  • 필요한 경우 원래 리포지토리를 로컬 리포지토리의 추가 원격 리포지토리로 추가합니다.그러면 해당 리포지토리에 게시된 변경사항을 직접 가져올 수 있습니다.
  • 로컬에서 수정 및 커밋을 수행합니다.
  • 일반적으로 프로젝트의 저장소에 직접 쓰기 권한이 없기 때문에 GitHub 저장소에 변경 사항을 푸시합니다.
  • 프로젝트의 유지 관리자에게 연락하여 변경 사항을 가져오고 검토/합병을 요청한 후 프로젝트의 리포지토리로 다시 밀어 넣도록 합니다(원하는 경우).

이것 없이, 공공 프로젝트가 누구나 자신의 약속을 직접 밀고 나갈 수 있게 하는 것은 매우 드문 일입니다.

Forking은 기존 리포지토리에서 완전히 새로운 리포지토리를 만듭니다(단순히 gitHub/bitbucket에서 gitclone을 수행).

포크를 사용하는 것이 가장 좋습니다. '분할'의 목적이 논리적으로 독립적인 프로젝트를 만드는 것일 때, 프로젝트는 부모와 결코 재결합하지 않을 수 있습니다.

지사 전략은 기존/작업 중인 리포지토리에 새 지사를 생성합니다.

분기를 오리진과 병합할 목적으로 피쳐를 통해 작업할 임시 장소로 작성할 때 분기가 가장 잘 사용됩니다.

보다 구체적:- 오픈 소스 프로젝트에서 저장소로 푸시할 수 있는 사용자는 저장소의 소유자입니다.그러나 오픈 소스의 아이디어는 모든 사람이 프로젝트에 기여할 수 있다는 것입니다.

이 문제는 포크로 해결됩니다. 개발자가 오픈 소스 프로젝트에서 무언가를 변경하고자 할 때마다 공식 저장소를 직접 복제하지 않습니다.대신, 그들은 복사본을 만들기 위해 포크를 사용합니다.작업이 완료되면 저장소 소유자가 변경 사항을 검토하고 자신의 프로젝트에 병합할지 여부를 결정할 수 있도록 끌어오기 요청을 합니다.

코어 포킹은 피쳐 분기와 비슷하지만 분기를 만드는 대신 저장소의 포크가 만들어지고 병합 요청을 수행하는 대신 풀 요청을 만듭니다.

아래 링크는 그 차이를 잘 설명한 방법으로 제공합니다.

https://blog.gitprime.com/the-definitive-guide-to-forks-and-branches-in-git/

https://gots.works/gots/5가지 유형의 git-type-type-gots

http://www.continuousagile.com/unblock/branching.html

언급URL : https://stackoverflow.com/questions/3611256/forking-vs-branching-in-github