programing

git 하위 모듈을 하위 폴더를 가리키도록 변경하는 방법은?

telecom 2023. 10. 22. 19:24
반응형

git 하위 모듈을 하위 폴더를 가리키도록 변경하는 방법은?

SubModule 튜토리얼을 대충 훑어보면서 boto 프로젝트에서 submodule을 만들었습니다.그 후, 저는 이 프로젝트의 하위 집합, 특히 boto 폴더만 필요하다는 것을 알게 되었습니다.

이 폴더를 가리키도록 서브모듈을 변경하고 싶습니다..gitmodules 를 보면,

[submodule "backup/src/boto"]
    path = backup/src/boto
    url = https://github.com/boto/boto.git

https://github.com/boto/boto.git 대신 어떤 URL을 사용해야 합니까?URL 변경 후 boto 폴더를 로컬에서 삭제하고 다시 당겨야 합니까?

하위 모듈의 URL은 항상 저장소를 가리킵니다. 일반적으로 git이 "좁은 클론"을 지원하지 않는 것과 동일하게 저장소의 하위 폴더만 원하도록 지정할 수는 없습니다.

전체 저장소를 하위 모듈로 사용할 수 없는 경우 언제든지 bto에서 cron 작업을 설정할 수 있습니다.

  1. git fetch저 저장소를 디렉토리로
  2. 사용하다git filter-branch하위 디렉터리가 최상위 수준에 있는 분기를 업데이트합니다.
  3. 리포지토리의 분기를 하위 모듈로 추가합니다.하지만 이 모든 것이 약간 이상하고 저는 저장소 전체를 서브모듈로 가지고 사는 것을 선호합니다.

저장소의 일부만 복제할 수는 없습니다.이것은 git이 저장소를 전체 개체로 다루기 때문입니다. 그것을 얻으면 모든 을 얻을 수 있습니다.

따라서 여기서 해결책은 서브모듈을 다른 디렉토리로 가져온 다음 심볼 링크를 사용하여 목표를 달성하는 것입니다.

여기 있는 모든 답들은 꽤 오래된 것들입니다.더 새로운 것을 사용할 수 있습니다.git sparse-checkout명령 문서, 이 문서의 추가 예를 참조하여 레포 조각을 수집합니다.이것은 더 큰 git 프로젝트에서 디렉터리를 한두 개만 원하는 경우에 효과적입니다.

TLDR:

git sparse-checkout init --cone
git sparse-checkout set <dir1> <dir2> ...
git checkout main

하위 모듈에 분기를 만들고 폴더를 위로 이동하여 필요 없는 것을 삭제하는 것이 당신이 원하는 일입니다.그러면 지점을 대신 관리할 수 있습니다.변경 내용을 추가하려면 먼저 병합을 백업할 수 있어야 합니다.Git은 당신이 파일을 이동한 것을 알고 병합을 성공적으로 수행할 것입니다.

도움이 되길 바랍니다.

하위 모듈을 에 저장합니다.submodules/디렉토리를 선택한 다음 symlink를 만듭니다.

git submodule add https://github.com/user/repo submodules/repo
ln -s submodules/repo/subdir .
git add subdir

결과:

./
  submodules/
    repo/
      subdir/

  subdir  -->  ./submodules/repo/subdir

이 접근 방식의 한 가지 이점은 여러 개의 하위 디렉터리와 함께 재사용할 수 있다는 것입니다.

언급URL : https://stackoverflow.com/questions/5303496/how-to-change-a-git-submodule-to-point-to-a-subfolder

반응형