Git 창고 설정 서브 모듈

10040 단어 Github
Git 도구-하위 모듈
어떤 업무 중의 항목 은 다른 항목 을 포함 하고 사용 해 야 하 는 경우 가 종종 있다.제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 와 관련 된 조작 을 직접 하면 됩 니 다.

    좋은 웹페이지 즐겨찾기