2017-09-27 22 views
0

나는 특정 저장소를 더 작은 저장소로 분할하는 전략을 평가할 큰 코드베이스를 가지고 있습니다. git 서브 트리 분할을 사용하여, 내가 원하는 디렉토리를 분리 할 수있다. & 커밋 내역이 그대로 보인다.메인 레포에서 서브 트리를 분리하고 새 레포를 만드는 경우 내 오래된 풀 요청은 어떻게됩니까?

내가 말하길이 접근법으로 전진하면, Github에 내 오래된 풀 요청 (분리 된 디렉토리의 코드 포함)은 어떻게 될 것입니까?

여전히 이전 코드에 대한 참조가 표시됩니까? 아니면 변경 사항이 원래 코드베이스에있는 코드 만 참조 할 것입니까?

도움 주셔서 감사합니다.

+0

끌어 오기 요청의 본질은 저장소 내의 해시 ID입니다. 해시 ID 및 기존 저장소는 어떻게됩니까? 그러면 풀 요청에 대한 응답이 표시됩니다. – torek

+0

끌어 오기 요청은 아무것도 아닌 지점입니다. 'fetch = + refs/pull/*/head : refs/remotes/origin/pr/*'와 같은 라인을 추가 할 수도 있습니다. 끌어 오기 요청을 병합하려는 것은 일반적인 충돌 해결 방법으로 분기를 병합하는 것과 같습니다. – o11c

답변

1

git subtree split에서 새로 생성 된 저장소는 에 지정된 디렉터리에서 변경 한 커밋 만 포함합니다.

원래 자식의 repo 파일 아래 구조를 가정 :

Root 
|___ file1  
|___ file2 
|___ subfolder/ 
     |___ file3 
     |___ file4 

그리고 원래 커밋 역사 등을 :

다음
* 8cb09fb (HEAD -> master) Merge branch 'dev' into matser 
|\ 
| * e1e054c (dev) change file2 for fourth time merge 
* | 6e8ee57 change file3 for fourth time merge 
* | ebdfb0b Merge branch 'dev' into master 
|\ \ 
| |/ 
| * 5d93766 change file2 for thrid time merge 
* | b95668a change file1 for thrid time merge 
* | 09ca222 Merge branch 'dev' into matser 
|\ \ 
| |/ 
| * d3dc890 change file3 for second time merge 
* | 5818123 change file1 for second time merge 
* | cb39f04 Merge branch 'dev' into master 
|\ \ 
| |/ 
| * 4dc4aaa change file3 and file4 on dev branch 
* | fef775c change file3 and file4 on master branch 
|/ 
* d8d81e6 add subfolder and it’s files 
* 5446ea3 change file1 

새 자식의 repo에 subfolder을 분할 git subtree split를 사용하는 경우, subfolder (file3file4)을 변경 한 커밋 만 새로운 레포 커밋 기록에 표시됩니다. 아래와 같이 새로운 REPO 커밋의 역사 : 첫번째 5446ea 커밋, 그것은 단지 (subfolder 디렉토리에서) file1을 변경 한 내용은

  • , 그래서 커밋 : 원래의 repo에서 볼 수 있듯이

    * 60a7f3e (master) change file3 for fourth time merge 
    * 954b730 Merge branch 'dev' into master 
    |\ 
    | * b4b8d92 change file3 for second time merge 
    * | 35f7754 Merge branch 'dev' into matser 
    |\ \ 
    | |/ 
    | * fde1de3 change file3 and file4 on master branch 
    * | d4795a8 change file3 and file4 on master branch 
    |/ 
    * cd367a2 add subfolder and it’s files 
    

    새 리포에는 표시되지 않습니다.

  • 5818123이 다시 병합해야하는 경우에는 file1 만 변경되었으므로 커밋은 새 repo에 표시되지 않습니다.
  • 세 번째 병합을위한 커밋 (b95668a, 5d93766ebdfb0b)은 모두 subfolder으로 변경되지 않으므로 새 repo에 표시되지 않습니다.
  • 커밋 e1e054c의 경우 file2dev 분기로 변경되었으므로 새로운 repo에는 표시되지 않습니다. 네 번째를 들어
  • 이 처음 부모가 master 분기에 6e8ee57 (안 변경 하위 폴더를) 커밋의와 동일한 버전으로 subfolder ( file3file4)를 유지, 그래서 새로운 REPO에 표시되지 않습니다 또한 커밋, 8cb09fb 커밋 합병했다.