.gitignore의 git 하위 모듈을 무시하거나 저장소에 커밋합니까?
나는 내 프로젝트에 서브 모듈을 추가 한 project_dir/vendor/submodule_one
내가 지금 실행 때마다 git status
내가 얻을 modified: vendor/submodule_one (new commits)
.
내 질문은 이것을 처리하는 가장 좋은 방법은 무엇입니까? 내 메인 프로젝트가 내 서브 모듈의 세부 사항에 대해 알 필요가 없기 때문에 vendor/submodule_one
-folder를 내 폴더에 추가 .gitignore
합니까?
아니면 서브 모듈을 변경하고 커밋 할 때 메인 프로젝트에서도 커밋해야합니까?
서브 모듈을 시작하기 만하면 설정 외에 많은 정보를 찾을 수없는 것 같습니다.
아니요, 하위 모듈을 추가 할 필요가 없습니다 .gitignore
. 부모가 하위 모듈에서 보게되는 것은 gitlink ( 특수 항목,mode 160000
)입니다.
즉, 하위 모듈에서 직접 변경 한 내용은 상위 디렉토리에서 커밋이 뒤따라야합니다.
이렇게하면 상위 디렉토리는 하위 모듈의 상태에 대한 올바른 커밋을 기록합니다. 해당 커밋은 위에서 언급 한 "gitlink"입니다.
" git submodule update (true nature of submodules) " 에서 해당 정책에 대한 자세한 내용을 읽을 수 있습니다 .
서브 모듈의 기본 아이디어 는 특정 커밋에서 다른 저장소를 참조 하는 구성 요소 기반 접근 방식 입니다. 그러나 해당 하위 모듈에서 변경 사항이있는 경우 상위 저장소에서도 해당 참조를 업데이트해야합니다.
Git 2.13 (Q2 2017)에서는 gitlink를 무시 하지 않고 다음을 사용하여 하위 모듈을 무시할 수 있습니다.
git config submodule.<name>.active false
" Ignore new commits for git submodule " 을 참조하십시오 .
참고 : Git 2.15.x / 2.16 (2018 년 1 분기)에서는 하위 모듈을 무시하는 것이 더 정확합니다.
" git status --ignored --untracked
"은 (는) 무시 된 디렉터리 자체를 무시한 것으로 표시하는 대신 무시 된 디렉터리에 포함 된 별도의 프로젝트와 해당 다른 프로젝트의 파일을 나열하는 작업 트리에서 멈추지 않았습니다.
Johannes Schindelin ( )의 commit fadb482 (2017 년 10 월 25 일)를 참조하십시오 . (Merged by Junio C Hamano -- in commit da7996a , 06 Nov 2017)dscho
gitster
status
: 제외 된 디렉토리의 하위 모듈로 인해 혼동하지 마십시오.반복 될 때 추적되지 않는 파일이 아니라 제외되었음을 나타낼 수 있도록
exclude
플래그를treat_directory()
함수에 꼼꼼하게 전달합니다 .그러나 우리는 아직 하위 모듈을 같은 방식으로 취급하지 않았습니다.
그 때문에,
git status --ignored --untracked
서브 모듈로submodule
gitignored에서tracked/
은 "에서 서브 모듈을 보여줄 것Untracked files
"섹션, 예를 들어,
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
tracked/submodule/
Ignored files:
(use "git add -f <file>..." to include in what will be committed)
tracked/submodule/initial.t
대신 "
Ignored files
"섹션에 하위 모듈을 표시하려고합니다 .
On branch master
Ignored files:
(use "git add -f <file>..." to include in what will be committed)
tracked/submodule/
어떤 이유로 submodule.module-name.active 가 나를 위해 작동하지 않았습니다.
그래서 submodule.module-name.ignore를 사용 했습니다.
git config submodule.<your module path>.ignore all
https://git-scm.com/docs/gitmodules- 여기서 매개 변수의 가능한 값에 대한 설명을 찾을 수 있습니다.
(새 커밋) 및 (수정 된 콘텐츠) 메시지에 대해 나를 위해 작동합니다.
'Nice programing' 카테고리의 다른 글
C / C ++에서 부호없는 왼쪽 시프트 이전의 마스킹이 너무 편집증 적입니까? (0) | 2020.10.27 |
---|---|
> 대> = 버블 정렬로 인해 상당한 성능 차이 발생 (0) | 2020.10.27 |
C ++의 접근 자 메서드 (getter 및 setter)에 대한 규칙 (0) | 2020.10.27 |
iOS Private API 문서 (0) | 2020.10.27 |
템플릿 매개 변수 팩을 확장하지 않고 "저장"할 수 있습니까? (0) | 2020.10.27 |