git 하위 모듈을 제거하는 현재 방법은 무엇입니까?
Mac의 git 버전 1.9.3 (Apple Git-50)부터 git 하위 모듈을 제거하려면 어떻게해야합니까? 많은 개발자가 작동하지 않을 것이라고 말하는 오래된 정보를 많이 읽고 있습니다. 현재의 방법은 무엇입니까? 할 git deinit pathToSubModule
트릭을 할?
내가 작동 할 것이라고 생각한 단계는 여기에 있지만 의견은 그렇지 않다고 말합니다.
내 현재 상황과 필요한 사항을 설명하겠습니다. 빠른 저장소를 설치 하고 프로젝트의 하위 모듈로 추가했습니다. 이 코드는 이미 체크인되었으며 다른 사람들이 사용하고 있습니다. 지금해야 할 일은 동일한 Quick 저장소를 포크 하고 내 회사가 보유한보다 안전한 github (완전히 다른 비공개 github)에서 호스팅하는 것입니다. 포크 후 나는 그 포크를 gitSubmodule로 추가하고 이전에 설치했던 현재 Quick 서브 모듈을 대체하고 싶습니다.
업데이트 : 최신 git 버전에서 다음이 올바른 방법이라는 것을 읽었습니다. 확인하십시오.
To remove a submodule added using:
git submodule add blah@blah.com:repos/blah.git lib/blah
Run:
git rm lib/blah
That's it.
For old versions of git (circa ~1.8.5) use:
git submodule deinit lib/blah
git rm lib/blah
git config -f .gitmodules --remove-section submodule.lib/blah
당신은 git submodule deinit
git submodule deinit <asubmodule>
git rm <asubmodule>
# Note: asubmodule (no trailing slash)
# or, if you want to leave it in your working tree
git rm --cached <asubmodule>
rm -rf .git/modules/<asubmodule>
deinit
주어진 하위 모듈의 등록을 취소합니다. 즉, 작업 트리와 함께 전체
submodule.$name
섹션을 제거합니다.git/config
.또한 호출에
git submodule update
,git submodule foreach
그리고git submodule sync
것 건너 가 다시 초기화 될 때까지 더 이상 작업 트리에서 서브 모듈의 로컬 체크 아웃을하지 않으려면 그래서이 명령을 사용하여 등록되지 않은 서브 모듈을.저장소에서 서브 모듈을 정말로 제거하고
git rm
대신 사용을 커밋하려면 .경우
--force
지정, 서브 모듈의 작업 나무는 로컬 수정 사항을 포함 된 경우에도 제거됩니다.
하위 모듈을 안전하게 제거하는 방법.
( https://stackoverflow.com/a/1260982/342794에 추가 )
.gitmodules
파일 에서 하위 모듈 섹션을 나열하고 찾습니다 . 터미널을 통해 말합니다vi .gitmodules
. 예:[submodule "submodules/afnetworking"] path = submodules/afnetworking url = https://github.com/CompanyName/afnetworking.git
하위 모듈은 로컬 포크와 함께 사용할 수 있습니다. 장기 실행 프로젝트의 경우 코드가 원본 저장소와 다를 수 있으며 일부 수정 사항이있을 수 있습니다. 프로젝트 과정에서 하위 모듈 코드가 변경되었는지 확인하는 것이 좋습니다. 예 :
master
분기 또는 일부 로컬 분기를 가리키는 경우 로그를 확인하십시오 . 터미널을 통해 수행 된 수정을 찾기 위해 git 로그를 탐색합니다. 일반적으로 이들은 디렉토리 아래에 저장됩니다submodules
.User$ cd submodules/afnetworking User$ git log
.gitmodules에서 하위 모듈 섹션을 제거하고 파일을 저장하십시오. 예 :
git status
다음 항목 만 수정 됨으로 표시되어야 함modified: .gitmodules
를 사용하여 변경 사항을 준비
git add .gitmodules
합니다..git/config
파일 에서 하위 모듈 섹션을 나열하고 찾습니다 . 터미널을 통해 말합니다vi .git/config
. 예:[submodule "submodules/afnetworking"] url = https://github.com/CompanyName/afnetworking.git
Remove the git cache sobmodule files. running
git rm --cached submodules/afnetworking
(no trailing slash) would remove it successfully. Example:User$ git rm --cached submodules/afnetworking rm 'submodules/afnetworking' <-- terminal output
Remove the submodule files under
.git
directory withrm -rf .git/modules/...
. Confirm it withgit status
afterwards.User$ rm -rf .git/modules/submodules/afnetworking/ User$ git status On branch feature/replace-afnetworking-submodule-with-pod Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: .gitmodules deleted: submodules/afnetworking Untracked files: (use "git add <file>..." to include in what will be committed) submodules/afnetworking/
Commit the changes. Confirm with
git status
afterwards.User$ git commit -m "Remove submodule afnetworking" [feature/replace-afnetworking-submodule-with-pod 70e239222] Remove submodule afnetworking 2 files changed, 4 deletions(-) delete mode 160000 submodules/afnetworking User$ git status On branch feature/replace-afnetworking-submodule-with-pod Untracked files: (use "git add <file>..." to include in what will be committed) submodules/afnetworking/ nothing added to commit but untracked files present (use "git add" to track)
Delete the untracked submodule files.
User$ rm -rf submodules/afnetworking
Delete the references from Xcode project. Build, fix compile and runtime issues.
I'm using Git version 2.16.2 and git rm
does the job mostly well:
git rm path-to-submodule
You can verify with git status
and git diff --cached
that this deinitializes the submodule and modifies .gitmodules
automatically. As always, you need to commit the change.
However, even though the submodule is removed from source control, .git/modules/path-to-submodule
still contains the submodule repository and .git/config
contains its URL, so you still have to remove those manually:
git config --remove-section submodule.path-to-submodule
rm -rf .git/modules/path-to-submodule
Keeping the submodule repository and configuration is intentional so that you can undo the removal with e.g. git reset --hard
.
참고URL : https://stackoverflow.com/questions/29850029/what-is-the-current-way-to-remove-a-git-submodule
'program story' 카테고리의 다른 글
프라 미스 함수에 매개 변수를 전달하는 방법 (0) | 2020.09.24 |
---|---|
IRB에서 .rb 파일을 실행하는 방법은 무엇입니까? (0) | 2020.09.24 |
C / C ++에서 long long (0) | 2020.09.24 |
C #의 차별적 결합 (0) | 2020.09.24 |
Javascript 한 줄에 여러 변수를 정의하는 방법은 무엇입니까? (0) | 2020.09.24 |