임베딩 Git 리포지토리의 미친 사례

상황



우리는 폴더에 여러 프로젝트가 있고 모두 자체 원격 git repo를 가리키고 있었습니다. 모든 프로젝트를 한 곳에서 사용할 수 있도록 상위 폴더를 GitHub에서도 사용할 수 있도록 하는 방법을 생각했습니다. 아래와 같이 일반적인 정규 팔로우를 진행했습니다.

아래 언급된 명령으로 상위 폴더 초기화

git init


그런 다음 평소와 같이 모든 콘텐츠를 준비하고 아래 언급된 명령을 사용하여 커밋합니다.

Git add .
Git commit  -m “Main Project”


Github에 리포지토리를 만들고 원격 연결을 추가하여 물건을 업로드했습니다.

git branch -M main
git remote add origin <url>
git push -u origin main


우리는 원격 저장소에서 모든 것을 사용할 수 있을 것으로 기대했지만 슬프게도 실제 문제가 시작되는 곳입니다. 아래 스크린샷을 보면 두 개의 프로젝트를 볼 수 있지만 내용이 표시되지 않습니다. 따라서 이 게시물에서 우리는 새로운 것을 배움으로써 이 상황을 이해하고 해결하려고 노력할 것입니다.


읽는 것보다 보는 것을 좋아하는 사람들은 이 비디오를 확인할 수 있습니다.


해결책을 찾기 위한 여정.



우리는 이것에 놀랐고, 그래서 지금까지 수행된 단계를 다시 확인하려고 생각했습니다. 그것이 우리가 첫 번째 힌트를 얻은 곳입니다. 경고 메시지였으며 항상 그렇듯이 무시했습니다.

repo에 포함된 repo가 ​​있는 경우 내부 repo의 모든 내용을 업로드하지 않는 경우 명확하게 강조 표시됩니다. 좋은 점은 Submodules 이라는 개념의 방향으로 인도한다는 것입니다. 하위 모듈은 repo 내부에 repo를 가질 수 있도록 허용하는 것이 아닙니다. 일반적으로 프로젝트를 개발하는 동안 자체적으로 버전이 지정된 여러 외부 라이브러리를 참조하는 경향이 있습니다. 그래서 그것들을 사용하기 위해 서브 모듈이라는 개념을 도입했습니다. 그래서 여기에 우리의 문제에 대한 답이 있습니다.

따라서 첫 번째 단계로 상위 클래스에 하위 모듈을 추가해야 합니다. 사용하자

Git submodule add <url> <name of module>


두 프로젝트를 하위 모듈로 추가했으며 새 파일 .gitmodules가 생성된 것을 볼 수 있습니다. 내용을 확인하면 모든 하위 모듈의 세부 정보가 포함됩니다.

이제 완료되면 정규 커밋 주기를 따릅니다.

Git add .
Git commit  -m “Main Project”
git branch -M main
git remote add origin <url>
git push -u origin main


원격 저장소가 어떻게 생겼는지 봅시다. 와우 다른 저장소를 가리키는 추가 링크가 포함되어 있습니다.

좋아요, 우리의 핵심 문제는 해결되었지만 이 개념이 매우 강력하다는 것을 알았기 때문에 더 깊이 탐구할 생각이었습니다.

추가 탐색


우리는 어떻게 복제합니까?



우리는 처음에 간단한 git clone 명령으로 복제할 수 있다고 생각했지만 슬프게도 스크린 샷에서 볼 수 있듯이 이전과 같이 빈 폴더만 남게 됩니다.

추가 검색에서 우리는 하위 모듈도 복사하는 데 도움이 될 수 있는 –recursive 옵션을 알게 되었습니다.

Git clone <url> --recursive. 




상위 폴더에서 한 번에 모든 프로젝트의 상태를 어떻게 확인합니까?



각 프로젝트의 상태를 확인해야 하는 경우를 대비하여 번거로운 각 폴더 아래로 이동해야 한다고 생각했습니다. 따라서 하위 모듈이 이에 도움이 되며 필요한 모든 작업은 다음과 같습니다.

Git submodule foreach git status



상태를 확인할 수 있다면 풀링도 할 수 있습니까? 예, 아래 명령을 사용할 수 있습니다.

Git submodule foreach git pull




나는 당신이 이것으로부터 새로운 것을 배웠기를 바랍니다. git을 사용하는 동안 배운 내용을 듣고 싶습니다.

좋은 웹페이지 즐겨찾기