Git 창고 설정 서브 모듈
10040 단어 Github
어떤 업무 중의 항목 은 다른 항목 을 포함 하고 사용 해 야 하 는 경우 가 종종 있다.제3자 라 이브 러 리 나 독립 적 으로 개발 한 여러 부모 프로젝트 의 라 이브 러 리 일 수도 있 습 니 다.지금 문제 가 생 겼 습 니 다.두 개의 독립 된 프로젝트 로 생각 하고 한 프로젝트 에서 다른 하 나 를 사용 하고 싶 습 니 다.Git 은 하위 모듈 을 통 해 이 문 제 를 해결한다.하위 모듈 에 서 는 Git 창 고 를 다른 Git 창고 의 하위 디 렉 터 리 로 사용 할 수 있 습 니 다.그것 은 다른 창 고 를 자신의 프로젝트 에 복제 하 는 동시에 제출 한 독립 도 유지 할 수 있다.
하위 모듈 로 설정 하면 무엇 을 피 할 수 있 습 니까?하위 모듈 은 아무런 관계 가 없 는 git 창고 로 이해 할 수 있 습 니 다.이렇게 백 스테이지 클 라 이언 트 가 외부 창고 vtime 을 개발 합 니 다.h5 직원 클 라 이언 트 가 직접 클 라 이언 트 내부 의 vtimeh5 창고.이 하위 모듈 을 무시 하 는 폴 더 를 외부 에 설치 하 는 것 이 좋 습 니 다.그러면 h5 와 백 엔 드 는 독립 적 으로 개발 을 제출 하고 서로 영향 을 주지 않 습 니 다.서버 에서 실행 해 야 할 때 모두 끌 어 내리 기만 하면 됩 니 다.(아래:하위 모듈 이 있 는 프로젝트 복제)
1.서브 모듈 사용 시작
상황:예 를 들 어 제 가 웹 프로젝트 vtime 을 개발 하고 있 습 니 다.저 는 h5 와 협조 해 야 합 니 다.그들의 파일 은 제 프로젝트 에 포함 되 어 있 습 니 다.그들의 파일 은 제 vtime 의 키 폴 더 입 니 다.예 를 들 어 vtimeh5
우 리 는 하나의 주요 프로젝트 와 몇 개의 하위 프로젝트 로 나 뉘 어 진 프로젝트 에서 어떻게 개발 하 는 지 보 여줄 것 이다.
우선 Git 창 고 를 작업 중인 창고 의 하위 모듈 에 추가 합 니 다.
git submodule add
명령 뒤에 추적 하고 싶 은 항목 URL 을 추가 해서 새 하위 모듈 을 추가 할 수 있 습 니 다.이 예 에서"DbConnector"라 는 라 이브 러 리 를 추가 합 니 다.$ git submodule add https://github.com/chaconinc/DbConnector
Cloning into 'DbConnector'...
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 11 (delta 0), reused 11 (delta 0)
Unpacking objects: 100% (11/11), done.
Checking connectivity... done.
기본적으로 하위 모듈 은 하위 항목 을 창고 와 같은 이름 의 디 렉 터 리 에 저장 합 니 다.이 예 는"DbConnector"입 니 다.다른 곳 에 두 고 싶다 면 명령 끝 에 다른 경 로 를 추가 할 수 있 습 니 다.
이 때 git status 를 실행 하면 몇 가지 일 을 알 게 될 것 입 니 다.
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD ..." to unstage)
new file: .gitmodules
new file: DbConnector
우선 새로운
.gitmodules
파일 에 주의해 야 한다.이 프로필 은 항목 URL 과 끌 어 온 로 컬 디 렉 터 리 사이 의 맵 을 저장 합 니 다.$ cat .gitmodules
[submodule "DbConnector"]
path = DbConnector
url = https://github.com/chaconinc/DbConnector
만약 여러 개의 하위 모듈 이 있다 면,이 파일 에는 여러 개의 기록 이 있 을 것 이다.주의해 야 할 것 은 이 파일 도.gitignore 파일 처럼 버 전 제 어 를 받는다 는 것 이다.그것 은 이 프로젝트 의 다른 부분 과 함께 끌 려 갈 것 이다.이것 이 바로 이 프로젝트 를 복제 한 사람 이 서브 모듈 을 어디서 얻 었 는 지 아 는 이유 다.
DbConnector 는 작업 디 렉 터 리 의 하위 디 렉 터 리 이지 만 Git 은 하위 모듈 로 간주 합 니 다.그 디 렉 터 리 에 없 을 때 Git 은 내용 을 추적 하지 않 고 이 창고 의 특수 제출 로 간주 합 니 다.
제출 할 때 다음 과 같은 정 보 를 볼 수 있 습 니 다.
$ git commit -am 'added DbConnector module'
[master fb9093c] added DbConnector module
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 DbConnector
DbConnector 가 기록 한 160000 모드 를 주의 하 십시오.이것 은 Git 의 특수 한 모드 입 니 다.이것 은 본질 적 으로 하위 디 렉 터 리 나 파일 로 기록 하 는 것 이 아니 라 한 번 의 제출 을 디 렉 터 리 로 기록 하 는 것 을 의미 합 니 다.
하위 모듈 의 폴 더 를 외부 무시 추적 파일 에 추가 하여 프로젝트 개발 에 전념 해 야 합 니 다.
git 의 config 설정 은 하위 모듈 을 끌 어 올 린 후 관련 정 보 를.gitmodules 에 기록 합 니 다.로 컬 설정 파일 을 초기 화 할 때:
git submodule init
이 때.git/config 에 하위 모듈 의 기록 을 저장 합 니 다.설정 파일 을 수정 하려 면(예 를 들 어 끌 어 올 리 는 방식 이나 창고 의 경로).git/config 의 우선 순위 가.gitmodules 보다 높 습 니 다.2.하위 모듈 을 포함 하 는 프로젝트 복제
다음 에 우 리 는 하위 모듈 을 포함 한 항목 을 복제 할 것 이다.이러한 항목 을 복제 할 때 기본적으로 이 하위 모듈 디 렉 터 리 를 포함 하지만 파일 이 없습니다.
$ git clone https://github.com/chaconinc/MainProject
Cloning into 'MainProject'...
remote: Counting objects: 14, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 14 (delta 1), reused 13 (delta 0)
Unpacking objects: 100% (14/14), done.
Checking connectivity... done.
$ cd MainProject
$ ls -la
total 16
drwxr-xr-x 9 schacon staff 306 Sep 17 15:21 .
drwxr-xr-x 7 schacon staff 238 Sep 17 15:21 ..
drwxr-xr-x 13 schacon staff 442 Sep 17 15:21 .git
-rw-r--r-- 1 schacon staff 92 Sep 17 15:21 .gitmodules
drwxr-xr-x 2 schacon staff 68 Sep 17 15:21 DbConnector
-rw-r--r-- 1 schacon staff 756 Sep 17 15:21 Makefile
drwxr-xr-x 3 schacon staff 102 Sep 17 15:21 includes
drwxr-xr-x 4 schacon staff 136 Sep 17 15:21 scripts
drwxr-xr-x 4 schacon staff 136 Sep 17 15:21 src
$ cd DbConnector/
$ ls
$
처리 할 수 있 는 두 가지 방법 이 있 습 니 다.1.DbConnector 디 렉 터 리 가 있 지만 비어 있 습 니 다.두 명령 을 실행 해 야 합 니 다.
git submodule init
로 컬 설정 파일 을 초기 화 하 는 데 사 용 됩 니 다.git submodule update
이 항목 에서 모든 데 이 터 를 캡 처 하고 부모 항목 에 표 시 된 적절 한 제출 을 확인 해 야 합 니 다.$ git submodule init
Submodule 'DbConnector' (https://github.com/chaconinc/DbConnector) registered for path 'DbConnector'
$ git submodule update
Cloning into 'DbConnector'...
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 11 (delta 0), reused 11 (delta 0)
Unpacking objects: 100% (11/11), done.
Checking connectivity... done.
Submodule path 'DbConnector': checked out 'c3f01dc8862123d317dd46284b05b6892c7b29bc'
현재 DbConnector 하위 디 렉 터 리 는 이전 제출 때 와 같은 상태 입 니 다.
하지만 좀 더 간단 한 방법 이 있다.git clone 명령 전달
--recursive
옵션 을 사용 하면 창고 의 모든 하위 모듈 을 자동 으로 초기 화하 고 업데이트 합 니 다.$ git clone --recursive https://github.com/chaconinc/MainProject
Cloning into 'MainProject'...
remote: Counting objects: 14, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 14 (delta 1), reused 13 (delta 0)
Unpacking objects: 100% (14/14), done.
Checking connectivity... done.
Submodule 'DbConnector' (https://github.com/chaconinc/DbConnector) registered for path 'DbConnector'
Cloning into 'DbConnector'...
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 11 (delta 0), reused 11 (delta 0)
Unpacking objects: 100% (11/11), done.
Checking connectivity... done.
Submodule path 'DbConnector': checked out 'c3f01dc8862123d317dd46284b05b6892c7b29bc'
하위 모듈 을 끌 어 올 린 후 하위 모듈 이 헤드 포인터 가 분 리 된 상태 에 있 음 을 발견 합 니 다.방금 끌 어 올 렸 기 때문에 제출 하지 않 았 기 때문에 master 분기 로 전환 할 수 있 습 니 다.
git checkout master
3.하위 모듈 을 포함 하 는 항목 에서 작업 하고 하위 모듈 에서 작업 git
가장 쉬 운 방법 은 관련 모듈 에 들 어가 서 git 와 관련 된 조작 을 직접 하면 됩 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
GitHub 사용 시작Step 1 파일 만들기 우선 로컬로 파일을 만듭니다. 여기는 테스트라고 합니다.py의 파일을 데모에 넣기 파일 생성이 완료된 후에도 데모 디렉토리는 일반 디렉토리이므로 Git의 제어 관리 아래 초기화 작업을 수행해...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.