B
(개인) 및 G
(공개)의 2 개의 분기가 있습니다.관련없는 분기 간의 git-merge가 원하지 않는 커밋 기록을 가져 오지 못하도록 방지합니다.
브랜치 B
(개인)은 주로 내 분지를 개발하고 잠시 동안 개인 코드, 독점 알고리즘 및 공개 할 수없는 몇 가지 사항을 포함하는 모든 종류의 커밋을 포함합니다.
G
(public) 지점을 만들었을 때 B
(개인용)으로 간단하게 분기 할 수 없었기 때문에 이전에 공개 할 수없는 모든 항목이 내역에 포함되어 있으므로 새 항목을 만들었습니다. 처음부터 (즉, 부모가없는) 분기. 그런 다음 모든 파일을 지점 B
(개인)에서 지점 G
(공용)으로 가져온 것만 큼 가져오고 (복사 한) 첫 번째 커밋이었습니다.
그 이후로 나는 지점 B
(개인)에서 개발 중이며 새로운 커밋이있을 때마다 G
(공개)에 체리를 선택했습니다.
이 모든 것은 내가 힘내 시작하기 시작한시기에 이루어 졌으므로 아마도 더 나은 방법으로 그 일을 할 수 있었지만이 배는 오랫동안 항해했습니다.
어떻게하면 git이 작동하는지 (그리고 어떻게 사용되는지) 알게되었으므로 B
을 G
(또는 그 반대)에 병합하여 모든 커밋을 선택하지 않을 수있었습니다.
이
G
에B
병합 : 그래서 여기에 내가 무엇을 시도했다입니다이들 역사에 접근 할 것이다 커밋 '누구나G
를 검색하기 때문에 unnaceptable 인G
에의 (개인) 커밋의 역사'는B
의 모든 수입 개인/민감한 데이터/알고리즘.G
B
에 병합 :이G
(개인)에 체리 고른 커밋의 모든 중복, 짜증나는하지만 큰 문제이다. 그러나B
을G
에 병합하려고 시도한 이후로는 아직 충분하지 않았습니다.B
의 (개인) 커밋 기록을 모두G
(받아 들일 수 없음)로 가져온 후에는 충분하지 않았습니다. 나는 이것이 git가B
에서G
으로 미래의 합병을위한 출발점으로 사용할 2 개의 가지에 "공통 부모"를 만들 것이라고 생각했다. 그렇지 않았다. 1.G
의 오프 리베이스B
과 동일 문제 :
B
의 오프리베이스
G
마다G
커밋의 경우, 충돌이 만들어졌습니다, 그래서 이것은 취소 입증했다.
TL; DR : 나는이 두 가지 개인과 개인의 커밋을 포함 B
및 공개 G
. 이것은 그들이 보는 방법은 다음과 같습니다
`B` (private): a -- b -- c -- d -- m -- n -- o -- p `G` (public): w -- x -- y -- z -/
m
는 병합 B
에 G
에서 커밋이다.
난에 "수입", "병합"또는 "가져가"커밋 할 n
, o
, p
(및 다른 B
에 밀어 커밋) 그들에게 하나 하나 (하나의 병합을 체리 따기 가져 커밋하지 않고, G
에 G
에 대한 모든 변경 사항은 B
의 이전 기록을 모두 가져 오지 않는 한 허용됩니다.
내 문제에 대한 해결책이 있는지는 잘 모르겠지만 어떤 도움을 주시면 감사하겠습니다.
나는 이것이 갈 방법이라고 생각한다. 실제로 서브 모듈을 사용하는 것을 고려하지 않았다. – Guaycuru
서브 모듈에 대한 정보를 읽었을 때 몇 가지 질문이 생겼습니다 : 개인 소유 클래스를 개인 서브 모듈로 추가하면 공용 저장소에 액세스하는 모든 사람이 해당 서브 모듈에 대한 오류가 발생하지 않을까요?모든 사람들이 공공 repo를 체크 아웃하는 것을 막지 않을까요? – Guaycuru
@Guaycuru 저것은 나가 쓴 : 개인적인 repo는 submodule로 공중 하나를, 참조한다 (추가한다) 반대. – VonC