Git 하위 모듈을 하위 디렉터리에 추가하려면 어떻게 해야 합니까?
나는 기트레핀을 가지고 있습니다.~/.janus/많은 서브모듈들이 들어있는.는 하위모추다니에 .~/.janus/snipmate-snippets/snippets/하지만 내가 달릴 때git submodule add <git@github.com:...>에 시대에snipmate-snippets디렉토리에 다음 오류 메시지가 표시됩니다.
You need to run this command from the top level of the working tree.
그래서 질문은 다음과 같습니다.하위 모듈을 에 추가하려면 어떻게 해야 합니다.snipmate-snippets 렉토리디?
안으로 들어가세요.~/.janus실행:
git submodule add <git@github ...> snipmate-snippets/snippets/
서브모듈(일반적으로 git)에 대한 자세한 정보가 필요한 경우 ProGit이 매우 유용합니다.
git1.8.4(2013년 7월)부터는 루트 디렉터리로 더 이상 돌아갈 필요가 없습니다.
cd ~/.janus/snipmate-snippets
git submodule add <git@github ...> snippets
(사용하지 않아도 되는 Buke Versteeh 설명/.에 있어서와 같이snippets/.:snippets
커밋 091a6eb0feed820a43663ca63dc2bc0bb247bae를 참조하십시오.
하위 모듈: 최상위 요구 사항 삭제
새기사를 합니다.
rev-parse --prefix하위 모듈 명령에 지정된 모든 경로를 처리하는 옵션으로 저장소의 최상위 수준에서 실행해야 하는 요구 사항을 삭제합니다.상대 서브모듈 URL의 해석은 "의 여부에 따라 달라지기 때문입니다.
remote.origin.url구성되어 있으며, " 구성되에을있 " 상대서 URL에서 으로 차단합니다.git submodule add작업 트리의 최상위 레벨이 아닐 때.사인 오프 바이: 존 키핑
커밋에 따라 12b9d32790b40bf3ea49134095619700191abf1f
아니다'가 됩니다.
git rev-parse마치 저장소의 지정된 하위 디렉터리에서 호출된 것처럼 동작하며, 인쇄하는 파일 경로는 작업 트리의 맨 위에 있는 전체 경로로 접두사가 붙습니다.은 셸 할 때 합니다.
cd명령행에서 사용자가 지정한 상대 경로를 처리해야 합니다.
구성 파일을 수동으로 편집하는 이상한 취향을 공유하는 분들은 다음을 추가(또는 수정)하는 것도 도움이 될 것입니다.
.git/config(개인 구성)
[submodule "cookbooks/apt"]
url = https://github.com/opscode-cookbooks/apt
.git 모듈(공유 구성 포함)
[submodule "cookbooks/apt"]
path = cookbooks/apt
url = https://github.com/opscode-cookbooks/apt
이 항목도 참조하십시오. .git 모듈과 .git/config에서 하위 모듈을 지정하는 것의 차이점은 무엇입니까?
저도 비슷한 문제가 있었지만 GUI 도구로 궁지에 몰렸습니다.
저는 몇 개의 파일이 들어 있는 하위 프로젝트를 가지고 있었는데, 지금까지 그들의 Git repo를 확인하는 대신 복사했습니다.하위 폴더에 레포를 생성하고 커밋, 푸시 등을 수행할 수 있었습니다.그러나 상위 레포에서 하위 폴더는 하위 모듈로 처리되지 않았으며, 해당 파일은 여전히 상위 레포에 의해 추적되고 있었습니다. 문제가 발생하지 않았습니다.
이 혼란에서 벗어나기 위해 Git에게 (파일을 삭제하지 않고) 하위 폴더 추적을 중지하라고 말해야 했습니다.
proj> git rm -r --cached ./ui/jslib
그런 다음 하위 모듈이 있다고 말해야 했습니다(현재 git에서 추적 중인 것이 있다면 할 수 없습니다).
proj> git submodule add ./ui/jslib
갱신하다
이 문제를 해결하는 이상적인 방법에는 몇 가지 단계가 더 포함됩니다.이상적인 경우 기존 repo는 상위 git 모듈 없이 자체 디렉터리로 이동하고 커밋 및 푸시된 다음 다음과 같은 하위 모듈로 추가됩니다.
proj> git submodule add git@bitbucket.org:user/jslib.git ui/jslib
그러면 Git repoin이 하위 모듈로 복제됩니다. 여기에는 표준 복제 단계뿐만 아니라 해당 하위 모듈이 작동하도록 사용자를 대신하여 수행되는 몇 가지 더 명확하지 않은 구성 단계도 포함됩니다.가장 중요한 차이점은 실제 gitdir가 사는 곳에 대한 경로 참조를 포함하는 .git 디렉토리 대신 단순한 .git 파일을 배치한다는 것입니다. 일반적으로 상위 프로젝트 root .git/modules/jslib.
만약 여러분이 이런 식으로 일을 하지 않는다면, 그들은 여러분에게 잘 작동할 것입니다. 하지만 여러분이 부모님을 약속하고 밀치고, 다른 개발자가 그 부모님을 끌어 당기기만 하면, 여러분은 그들의 삶을 훨씬 더 힘들게 만들 뿐입니다.독자적인 .gitdir를 포함하는 dir의 하위 폴더에 전체 .gitdir가 있는 한, 그들이 당신의 기계에 있는 구조를 복제하는 것은 매우 어려울 것입니다.
이동, 푸시, git add 서브모듈이 가장 깨끗한 옵션입니다.
.vim 스크립트에 대한 Vundle 업데이트를 사용하는 것뿐만 아니라 구석에 있는 내 자신을 칠했기 때문에 위의 Chris의 답변을 용이하게 하는 데 도움이 되는 One-line bash 스크립트. DEST하위 모듈이 들어 있는 디렉터리의 경로입니다.수행 후 수행git rm -r $DEST
DEST='path'; for file in `ls ${DEST}`; do git submodule add `grep url ${DEST}/${file}/.git/config|awk -F= '{print $2}'` ${DEST}/${file}; done
건배.
언급URL : https://stackoverflow.com/questions/9035895/how-do-i-add-git-submodule-to-a-sub-directory
'programing' 카테고리의 다른 글
| 작업 완료 시기소스를 사용하시겠습니까? (0) | 2023.05.09 |
|---|---|
| 발송인.호출 시작: 람다를 시스템으로 변환할 수 없습니다.위임 (0) | 2023.05.09 |
| IPython 변수를 bash 명령에 대한 인수로 전달 (0) | 2023.05.04 |
| Android xml 오류: RelativeLayout(@id/LinearLayout_acc, @id/ProgressBar_statusScreen)이 있는 "지정된 이름과 일치하는 리소스를 찾을 수 없습니다" (0) | 2023.05.04 |
| 명령줄을 사용하여 커밋 메시지를 검색하는 방법은 무엇입니까? (0) | 2023.05.04 |