git 하위 모듈을 다른 저장소로 어떻게 바꾸나요?
git 서브 모듈을 다른 git repo로 어떻게 바꾸나요?
특히, 하위 모듈이 있습니다.
- 에있는
./ExternalFrameworks/TestFramework
자식의 repo에 그 포인트git@github.com:userA/TestFramework.git
- 이제를 가리키고 싶습니다
git@github.com:userB/TestFramework.git
.
문제는 여기 에 설명 된 방법으로 하위 모듈을 삭제 한 다음 명령을 사용하여 다시 추가한다는 것입니다.
git submodule add git@github.com:userB/TestFramework.git
이 오류가 발생합니다.
A git directory for 'ExternalFrameworks/TestFramework' is found locally with remote(s):
origin git@github.com:userA/TestFramework.git
If you want to reuse this local git directory instead of cloning again from
git@github.com:userB/TestFramework.git
use the '--force' option. If the local git directory is not the correct repo
or you are unsure what this means choose another name with the '--name' option.
하위 모듈의 위치 (URL)가 변경된 경우 간단히 다음을 수행 할 수 있습니다.
.gitmodule
새 URL을 사용하도록 파일 수정- 저장소에서 하위 모듈 폴더 삭제
rm -rf .git/modules/<submodule>
- 작업 디렉토리에서 하위 모듈 폴더 삭제
rm -rf <submodule>
- 운영
git submodule sync
- 운영
git submodule update
더 자세한 정보는 다른 곳에서 찾을 수 있습니다.
먼저, 편의를 위해 여기에 이미 언급 한 방법으로 현재 하위 모듈을 삭제 합니다.
.gitmodules
파일 에서 관련 섹션 삭제- 에서 관련 섹션 삭제
.git/config
- 실행
git rm --cached path_to_submodule
(후행 슬래시 없음) - 이제 추적되지 않은 하위 모듈 파일 커밋 및 삭제
이제 --name
플래그가 있는 새 하위 모듈을 추가합니다 . 이렇게하면 git .git/config
에 하위 모듈 에 대해 참조 할 대체 이름이 제공 되어 이전 기록에서 여전히 작업하고 싶은 하위 모듈과의 충돌을 해제 할 수 있습니다.
따라서 다음을 입력하십시오.
git submodule add --name UpdatedTestFramework git@github.com:userB/TestFramework.git
예상 한 경로에 하위 모듈이로드됩니다.
이 명령은 로컬 저장소의 파일을 변경하지 않고 명령 프롬프트에서 작업을 수행합니다.
git config --file=.gitmodules submodule.Submod.url https://github.com/username/ABC.git
git config --file=.gitmodules submodule.Submod.branch Dev
git submodule sync
git submodule update --init --recursive --remote
나를 위해 이것을 고친 것은 하위 모듈이 아닌 git repo의 루트에 있었으며
rm -rf .git/modules/yourmodule
그러면 정상적으로 추가 할 수 있습니다.
내가 찾은 가장 쉬운 방법은 다음과 같습니다.
git rm -rf [submodule_dir]
git submodule add --name new_[submodule_name] [new_submodule_url] [submodule_dir]
.gitmodules
수동으로 수정하는 아이디어가 마음에 들지 않았습니다 . 나는 또한 그것에 대해 약간의 블로그 포스트 를 썼다 .
이 복제본에 대해서만 원격 URL을 변경하려면 다음 을 수행하십시오 .
git config submodule."$submodule_name".url "$new_url"
이것은 .gitmodules
상위 프로젝트 의 파일에 영향을주지 않으므로 다른 개발자에게 전파되지 않습니다.
여기서는 "사용자 별 레코드 변경 사항"으로 설명 됩니다 .
git submodule sync
다시 기본 URL로 재설정되므로실행 하지 마십시오 .
참고 URL : https://stackoverflow.com/questions/14404704/how-do-i-replace-a-git-submodule-with-another-repo
'IT박스' 카테고리의 다른 글
sqlite3.ProgrammingError : 8 비트 바이트 열을 해석 할 수있는 text_factory를 사용하지 않는 한 8 비트 바이트 열을 사용해서는 안됩니다. (0) | 2020.09.12 |
---|---|
왜 C 함수의 크기는 항상 1 바이트입니까? (0) | 2020.09.12 |
varchar (8000)보다 varchar (500)의 장점이 있습니까? (0) | 2020.09.12 |
쉘에서 10 개 이상의 매개 변수를 처리하는 방법 (0) | 2020.09.12 |
SQL 뷰를 사용하는 좋은 이유는 무엇입니까? (0) | 2020.09.12 |