표준 명령을 사용하여 새 하위 모듈을 추가하고 이전 하위 모듈을 제거하면됩니다. (.git 내부의 우발적 인 오류를 방지해야 함)
설정 예 :
mkdir foo; cd foo; git init;
echo "readme" > README.md; git add README.md; git commit -m "First"
## add submodule
git submodule add git://github.com/jquery/jquery.git
git commit -m "Added jquery"
## </setup example>
'jquery'를 'vendor / jquery / jquery'로 이동하십시오.
oldPath="jquery"
newPath="vendor/jquery/jquery"
orginUrl=`git config --local --get submodule.${oldPath}.url`
## add new submodule
mkdir -p `dirname "${newPath}"`
git submodule add -- "${orginUrl}" "${newPath}"
## remove old submodule
git config -f .git/config --remove-section "submodule.${oldPath}"
git config -f .gitmodules --remove-section "submodule.${oldPath}"
git rm --cached "${oldPath}"
rm -rf "${oldPath}" ## remove old src
rm -rf ".git/modules/${oldPath}" ## cleanup gitdir (housekeeping)
## commit
git add .gitmodules
git commit -m "Renamed ${oldPath} to ${newPath}"
대형 서브 모듈에 대한 보너스 방법 :
하위 모듈이 크고 복제를 기다리지 않으려면 이전을 원점으로 사용하여 새 하위 모듈을 만든 다음 원점을 전환 할 수 있습니다.
예 (동일한 예 설정 사용)
oldPath="jquery"
newPath="vendor/jquery/jquery"
baseDir=`pwd`
orginUrl=`git config --local --get submodule.${oldPath}.url`
# add new submodule using old submodule as origin
mkdir -p `dirname "${newPath}"`
git submodule add -- "file://${baseDir}/${oldPath}" "${newPath}"
## change origin back to original
git config -f .gitmodules submodule."${newPath}".url "${orginUrl}"
git submodule sync -- "${newPath}"
## remove old submodule
...
git mv
는 질문에서 바로 명령으로 자신의 질문 에 답변합니다.