답변:
.gitmodules
URL을 업데이트하기 위해 파일 을 편집 한 다음 git submodule sync
변경 사항을 수퍼 프로젝트 및 작업 복사본에 반영하도록 실행할 수 있어야합니다.
git submodule foreach -q git config remote.origin.url
"실제"서브 모듈의 URL을 볼 수
.git/config
git 2.1.0을 사용하여 업데이트되지 않았습니다 . 나는 갱신에 모두했다 .gitmodules
및 .git/config
수동으로 실행하기 전에 git submodule sync --recursive
내 서브 모듈은 원격으로 업데이트해야 할 수 있습니다.
git submodule update --init --recursive --remote
실제로 새 원격으로 저장소를 변경하는
이 명령은 로컬 저장소의 파일을 변경하지 않고 명령 프롬프트 작업을 수행합니다.
git config --file=.gitmodules submodule.Submod.url https://github.com/username/ABC.git
git config --file=.gitmodules submodule.Submod.branch Development
git submodule sync
git submodule update --init --recursive --remote
스크린 샷은 블로그를 참조하십시오 : GIT 서브 모듈 URL / 지점을 동일한 저장소의 다른 URL / 지점으로 변경
git add .gitmodules
git commit -m "modified submodule URL"
git push origin master
간단히 말해서 .gitmodules 파일을 편집 한 다음 다시 동기화하고 업데이트하면됩니다.
git 명령을 통해 또는 직접 파일을 편집하십시오.
git config --file=.gitmodules -e
또는 그냥 :
vim .gitmodules
그런 다음 다시 동기화하고 업데이트하십시오.
git submodule sync
git submodule update --init --recursive --remote
git submodule update --init
나를 위해 일했고, --remote
원격 저장소의 HEAD에 묶는 것처럼 보입니다.
Git 2.25 (Q1 2020)를 사용하여 수정할 수 있습니다.
" Git submodule url changed "및 새로운 명령을 참조하십시오
git submodule set-url [--] <path> <newurl>
원래 답변 (2009 년 5 월, 10 년 전)
실제로, 역할 을 명확히하기 위해 2009 년 4 월에 패치 가 제출되었습니다gitmodule
.
따라서 gitmodule 문서 에는 아직 다음이 포함되어 있지 않습니다.
.gitmodules
자식-설정 : 자식 작업 트리의 최상위 디렉토리에있는 파일, 요구 사항의 클로 linkgit 일치하는 구문으로 텍스트 파일입니다 1 .
[신규] :
이 파일은 Git에서 관리하므로 프로젝트 하위 모듈의 + 레코드를 추적합니다.
이 파일에 저장된 정보는 프로젝트 구성 파일에 저장된 레코드의 정식 버전을 작성하는 힌트로 사용됩니다.
구성 파일에는 사용자 별 레코드 변경 (예 : 네트워킹 상황으로 인한 서브 모듈 URL의 차이를 설명하기 위해)이 이루어져야하고, 전파 될 레코드 변경 (예 : 서브 모듈 소스의 재배치로 인해)이이 파일에 이루어져야합니다. .
그것은 Jim의 대답을 거의 확인시켜 줍니다.
이 자식 서브 모듈 튜토리얼을 따르면, git submodule init
서브 모듈 저장소 URL을 .git / config에 추가하려면 " " 이 필요합니다 .
" git submodule sync
"는 URL 변경시 (특히 하위 모듈의 수가 중요한 경우) 해당 작업을보다 쉽게하기 위해 2008 년 8 월에 추가되었습니다 .
해당 명령을 사용하는 연관 스크립트는 간단합니다.
module_list "$@" |
while read mode sha1 stage path
do
name=$(module_name "$path")
url=$(git config -f .gitmodules --get submodule."$name".url)
if test -e "$path"/.git
then
(
unset GIT_DIR
cd "$path"
remote=$(get_default_remote)
say "Synchronizing submodule url for '$name'"
git config remote."$remote".url "$url"
)
fi
done
목표는 다음과 같습니다. git config remote."$remote".url "$url"
.git/config
: 수행하여 git config submodule."$submodule_name".url "$new_url"
되고 또한 여기에 설명 .
git submodule set-url [--] <path> <newurl>
무엇을합니까?
나를 위해 일한 것 (Windows에서는 git 버전 1.8.3.msysgit.0 사용) :
git submodule init
및git submodule update
그 모든 것을 한 후에, 모든 것이 내가 기대했던 상태에 있습니다. 저장소의 다른 사용자가 업데이트 할 때 비슷한 고통을 겪을 것이라고 생각합니다. 커밋 메시지에서 이러한 단계를 설명하는 것이 좋습니다!
git submodule update
. 다른 답변을 따르면 ./git/modules/external
디렉토리 에있는 내용이 변경되지 않으므로 업데이트를 시도해도 여전히 잘못된 URL을 가져옵니다.
git submodule set-url [--] <path> <newurl>