git 체크 아웃에서 git 하위 모듈 업데이트가 자동으로 수행되지 않는 이유는 무엇입니까?
git checkout으로 브랜치를 전환 할 때 대부분의 경우 서브 모듈을 업데이트하고 싶다고 가정합니다.
- 어떤 상황에서 당신은 할 수 없습니다 전환 한 후 업데이트 서브 모듈을 원하십니까?
- 이것이 git checkout에 의해 자동으로 수행되면 어떻게 될까요?
예를 들어 업데이트 :
- 분기 A에는 3852f1에 하위 모듈 S가 있습니다.
- 분기 B에는 fd72d7에 하위 모듈 S가 있습니다.
분기 A에서 git checkout B는 3852f1에 하위 모듈 S가있는 분기 B의 작업 복사본을 생성합니다 (수정 된 S 포함). git 하위 모듈 업데이트는 fd72d7에서 S를 체크 아웃합니다.
자동으로 업데이트되지 않는 하위 모듈이 Git의 개발 목표와 일치한다고 생각합니다. Git은 분산 모드에서 작동하도록되어 있으며 명시 적으로 지시하지 않는 한 로컬이 아닌 저장소에도 연결할 수 있다고 가정하지 않습니다. 그런 식으로 생각할 때 하위 모듈을 자동으로 새로 고치지 않는 Git은 예상되는 동작입니다.
즉, 해당 하위 모듈을 항상 가져 오기를 원하고 해당 하위 모듈에서 다른 로컬 저장소로 분기하지 않을 것임을 알고 있다면 자동으로 새로 고쳐도 아무 것도 중단하지 않아야합니다. 체크 아웃.
git checkout --recurse-submodules
git 2.13에 추가되었습니다.
이는 https://github.com/git/git/commit/e1104a5ee539408b81566066aaa6963cb87d5cd6#diff-c24776ff22455a30fbb78e378b7df0b0R139 의 릴리스 노트에 언급되어 있습니다.
submodule.recurse
옵션이 git 2.14에 추가되었습니다.
로 설정:
git config --global submodule.recurse true
man git-config
말한다 :
기본적으로 명령이 하위 모듈로 반복되는지 여부를 지정합니다. 이것은
--recurse-submodules
옵션 이있는 모든 명령에 적용됩니다 . 기본값은 false입니다.
기본적으로 모듈을 업데이트하지 않는 것은 대부분의 사용자의 기대에 어긋나고 하위 모듈의 채택을 제한하는 나쁜 Git 기본 동작이라고 생각합니다. 저는 개발자가이를 변경하기를 정말 바랍니다.
'development' 카테고리의 다른 글
Asp.Net의 / bin 폴더에 Roslyn이 "필요한"이유는 무엇입니까? (0) | 2020.11.12 |
---|---|
여러 데이터베이스를 준수하는 온라인 SQL 구문 검사기 (0) | 2020.11.12 |
브라우저의 단일 웹 페이지에 대해 몇 개의 JavaScript 프로그램이 실행됩니까? (0) | 2020.11.12 |
Promise에서 잡히지 않은 예외를 잡는 방법 (0) | 2020.11.12 |
3 개 이상의 테이블이 관련 될 때 JOIN이 작동하는 방식 이해. (0) | 2020.11.12 |