programing

중첩된 Git 저장소?

abcjava 2023. 6. 20. 21:19
반응형

중첩된 Git 저장소?

Git 저장소를 중첩할 수 있습니까?소유자:

 /project_root/
 /project_root/my_project
 /project_root/third_party_git_repository_used_by_my_project

하는 게 말이 됩니까?git init/add그자리의 /project_root?my_project그리고 제 3자는 따로?

서브모듈이라고 하는 Git 기능을 찾고 있을 수 있습니다.이 기능은 기본 리포지토리 내에 중첩된 종속 리포지토리를 관리하는 데 도움이 됩니다.

타사 라이브러리를 별도의 저장소에 배치하고 하위 모듈을 사용하여 기본 프로젝트와 연결합니다.Git Tools - 서브모듈(Pro Git book, 2번째)에 대한 설명이 있습니다.

보고서를 분할하는 방법을 결정할 때 보통 수정 빈도에 따라 결정합니다.타사 라이브러리에서 변경한 내용만 최신 버전으로 업그레이드하는 경우 기본 프로젝트에서 분리해야 합니다.

완전성을 위해:

또 다른 해결책이 있습니다. 하위 트리 병합입니다.

서브모듈과 달리 유지보수가 더 쉽습니다.일반적인 방법으로 각 리포지토리를 만듭니다.기본 리포지토리에 있는 동안 기본 디렉토리의 디렉토리에 있는 다른 리포지토리의 마스터(또는 다른 분기)를 병합하려고 합니다.

$ git remote add -f ThirdPartyGitRepo /project_root/
$ git merge -s ours --no-commit ThirdPartyGitRepo/master
$ git read-tree --prefix=third_party_git_repository_used_by_my_project/ -u ThirdPartyGitRepo/master
$ git commit -m "Merge ThirdPartyGitRepo project as our subdirectory"`

그런 다음 다른 리포지토리를 사용자의 디렉토리로 끌어오려면(업데이트를 위해) 하위 트리 병합 전략을 사용합니다.

$ git pull -s subtree ThirdPartyGitRepo master

저는 지금 이 방법을 몇 년 동안 사용하고 있습니다, 효과가 있습니다 :-)

하위 모듈과의 비교를 포함한 이 방법에 대한 자세한 내용은 문서 작성 방법을 참조하십시오.

추가할 수 있습니다.

/project_root/third_party_git_repository_used_by_my_project

로.

/project_root/.gitignore

이렇게 하면 중첩된 보고서가 상위 보고서에 포함되지 않고 독립적으로 작업할 수 있습니다.

그러나: 사용자가 git clean -dfx를 상위 repo에서 실행하면 무시된 중첩 repo가 제거됩니다.또 다른 방법은 폴더를 심볼릭으로 연결하고 심볼릭 링크를 무시하는 것입니다.그런 다음 git를 깨끗하게 실행하면 심볼릭 링크는 제거되지만 '내포된' 레포는 실제로 다른 곳에 있기 때문에 그대로 유지됩니다.

git-trefree는 단일 트리에서 여러 프로젝트를 작업하고 해당 프로젝트에 대해 분리 가능한 기록을 유지하는 데 도움이 됩니다.

요약.

리포지토리를 중첩할 수 있습니까?

네. 하지만 기본적으로 Git은 추적하지 않습니다..git중첩된 리포지토리의 폴더입니다.Git에는 중첩된 리포지토리(읽기)를 관리하도록 설계된 기능이 있습니다.

로컬에서 모든 것을 쉽게 관리하기 위해 /project_root을 git/add하는 것이 타당합니까? 아니면 내_project와 타사를 따로 관리해야 합니까?

git에는 중첩된 리포지토리를 관리하는 기능이 있기 때문에 말이 되지 않을 수 있습니다.Git에는 중첩된 저장소를 관리하는 기능이 내장되어 있습니다.

각각의 사용에 대한 장단점을 다루는 SO 질문이 있습니다.

프로젝트당 하나의 저장소를 사용합니다.그렇게 하면, 역사를 훑어보기가 쉬워집니다.

또한 제가 사용하고 있는 타사 라이브러리의 버전을 해당 라이브러리를 사용하는 프로젝트의 저장소로 확인할 것입니다.

언급URL : https://stackoverflow.com/questions/1871282/nested-git-repositories

반응형