자식 서브 모듈 이름 바꾸기
자식 서브 모듈 디렉토리의 이름을 바꾸는 쉬운 방법이 있습니까 ( 삭제 하고 새로운 대상 이름으로 다시 추가 하는 전체 동작을 수행 하는 것 제외).
그리고 우리가있는 동안 부모 디렉토리에서 단순히 다음을 수행 할 수없는 이유는 무엇입니까? git mv old-submodule-name new-submodule-name
다음 워크 플로가 작동하는 것을 발견했습니다.
- .gitmodule 업데이트
mv oldpath newpath
git rm oldpath
git add newpath
git submodule sync
참고 :이 방법은 2018 버전의 GIT에서 인덱스 및 .gitmodule을 올바르게 업데이트하지 않습니다.
Git1.8.5 (2013 년 10 월)는 프로세스를 단순화해야합니다 . 간단히 :
git mv A B
"
git mv A B
", 서브 모듈A
을 이동할 때 작업 트리.gitmodules
를 재배치하고 파일 의 경로를 조정하는 방법을 배웠 습니다 .
커밋 0656781fadca1 에서 더 많은 것을보십시오 :
현재
git mv
서브 모듈에서 " "를 사용 하면 서브 프로젝트의 작업 트리가 슈퍼 프로젝트의 작업 트리로 이동합니다. 그러나 서브 모듈의 경로 설정.gitmodules
은 그대로 유지됩니다. 이는 현재 작업 트리와 일치하지 않으며 올바른path -> name mapping
(와 같은status
및diff
) 에 의존하는 git 명령이 이상하게 작동합니다."하자
git mv
"단지 서브 모듈의 작업 트리를 이동뿐만 아니라 업데이트하지 않음으로써 여기에 도움 "submodule.<submodule name>.path
로부터"설정.gitmodules
파일 및 단계를 모두.
이것은.gitmodules
파일을 찾을 수 없을 때 발생 하지 않으며이 서브 모듈에 대한 섹션이 없을 때만 경고를 발행합니다. 이는 사용자가.gitmodules
파일 없이 일반 gitlink를 사용 하거나 "git mv"명령을 실행하기 전에 이미 경로 설정을 직접 업데이트 했기 때문입니다 (이 경우 경고mv
는 사용자 에게 해당 작업을 수행했음을 경고 합니다). 발견되고 병합 충돌이 포함 된
경우에만 명령이 실패하고 사용자에게 다시 시도하기 전에 충돌을 해결하도록 지시합니다..gitmodules
mv
자식 git mv
모듈 git 2.9 (2016 년 6 월)가 개선 됩니다 :
Stefan Beller ( )의 commit a127331 (2016 년 4 월 19 일)을 참조하십시오 . (의해 병합 - Junio C 하마노 - 에 9cb50a3 커밋 2,016 29 사월)stefanbeller
gitster
mv
: 중첩 하위 모듈 이동 허용"
git mv old new
"가 디렉토리 내의 서브 디렉토리로 존재하는 서브 모듈의 경로를old/
올바르게 조정하지 않았습니다 .그러나 하위 모듈은 git 디렉토리에 대한 링크와
.gitmodules
파일 업데이트를 업데이트해야 합니다.
$ mv submodule-oldpath submodule-newpath
$ git rm submodule-oldpath
$ git add submodule-newpath
$ git submodule sync
이 솔루션은 git add 명령을 사용할 때 하위 모듈이 아닌 간단한 디렉토리로 하위 모듈이 프로젝트에 포함 되었기 때문에 작동하지 않습니다.
올바른 해결책은 다음과 같습니다.
$ mv submodule-oldpath ~/another-location
$ git rm submodule-oldpath
$ git submodule add submodule-repository-URL submodule-newpath
출처 : http://bcachet.github.io/development/2012/05/25/rename-git-submodule/
위의 제안 중 일부를 시도했습니다. 나는 뛰고있어:
$ git --version
git version 1.8.4
하위 모듈을 초기화 해제하고 디렉토리를 제거하고 새 하위 모듈을 만드는 것이 가장 좋습니다.
git submodule deinit <submodule name>
git rm <submodule folder name>
git submodule add <address to remote git repo> <new folder name>
적어도 그것이 저에게 가장 효과적이었습니다. YMMV!
이름을 바꿀 수 없으므로 먼저 제거하고 ( deinit
) 다시 추가해야합니다.
따라서 제거한 후 :
git submodule deinit <path>
git rm --cached <path>
다음에서 참조를 다시 확인하고 제거 할 수도 있습니다.
.gitmodules
.git/config
.git/modules/<name>
각 폴더에는config
참조를 유지하는 파일 이 있으므로 참조 폴더를 (백업하는 것이 가장 좋습니다) 에서 제거하십시오.worktree
그런 다음 리포지토리에 대한 변경 사항을 커밋하여 변경 사항을 준비하십시오.
git commit -am 'Removing submodule.'
다음을 통해 미해결 문제가 없는지 다시 확인하십시오.
git submodule update
git submodule sync
git submodule status
이제 git 서브 모듈을 다시 추가 할 수 있습니다 :
git submodule add --name <custom_name> git@github.com:foo/bar.git <my/path>
.gitmodules 파일을 편집하여 서브 모듈의 이름을 바꾸고 서브 모듈 디렉토리의 이름을 바꾸십시오.
I think you might need to do a git submodule sync
afterwards, but I'm not in a position to check right now.
MacOs: When I wanna use VonC solution to change submodule folder Common
to lowercase:
git mv Common common
I get
fatal: renaming 'Common' failed: Invalid argument
Solution - use some temporary folder name and move twice:
git mv Common commontemp
git mv commontemp common
That's all :)
참고URL : https://stackoverflow.com/questions/4526910/rename-a-git-submodule
'IT story' 카테고리의 다른 글
노드에서 엄격 모드를 강제하는 방법은 무엇입니까? (0) | 2020.06.25 |
---|---|
jQuery validate로 수동으로 유효성 검사를 트리거하는 방법은 무엇입니까? (0) | 2020.06.25 |
Vim이 ASCII가 아닌 문자를 강조 표시하는 방법? (0) | 2020.06.25 |
Django와 함께 Pylint 사용하기 (0) | 2020.06.25 |
컨트롤러의 액션에서 XML을 ActionResult로 반환 하시겠습니까? (0) | 2020.06.25 |