git subtree split
정확히 수행하고 싶습니다. --prefix
을 통해 폴더를 지정하면 repo에서 별도의 트리가 생성되어 다른 저장소로 푸시 한 다음 적합하다고 생각하는 방식으로 사용할 수 있습니다.
자식 (1.8.1)의 현재 버전은 하위 트리 문서를 포함하지 않습니다,하지만 당신은 여기에서 찾을 수 있습니다 https://github.com/apenwarr/git-subtree/blob/master/git-subtree.txt
당신이 사용할 수있는 흐름은 다음과 같습니다
# In Repo A create your subtree split and push it
> git subtree split --prefix sub --branch subBranch
> git push C subBranch:master
# After some changes that touched the sub directory
> git subtree push --prefix sub C master
마지막 명령 줘야 트리를 다시 분할하고 (이전에 분할 된 커밋을 사용하여 C의 트리 무결성을 확인하십시오) C/master
으로 푸시하십시오.
당신은 콘텐츠에 대한 기록을 삭제하려면
당신이
--squash
옵션을 사용할 수 있습니다
C
에 푸시 할 때
git split
-ing와
git push
-ing. 스쿼시 및 비 스쿼시 컨텐트를 혼합하기 시작하면 서브 트리가 올바르게 분할되어 프리 소프트웨어 분할을 재사용 할 수 없으므로
C
으로 푸시 할 수 없으므로 일관성을 유지하고 계속 사용해야합니다.
마지막으로 sub
의 첫 번째 분할을 만든 후에는 삭제하고 새 하위 트리로 다시 가져올 필요가 없습니다. 그것을 유지한다면 git subtree
은 이전에 생성 된 커밋을 다른 스플릿에서 다시 생성/재사용합니다. 폴더를 삭제 한 다음 생성 된 커밋에서 sub
을 다시 추가하면 여전히 작동해야하며 --squash
을 사용하는 경우 C
은 기록이 없지만 내역은 A
으로 유지됩니다.