단일 프로젝트에서 나는 프로젝트의 여러 부분을 구성해야합니다. php로 작성된 웹 응용 프로그램, api 서버는 nodejs 및 android 및 ios 응용 프로그램으로 작성되었습니다. 여러 개의 repos로 분리하는 것이 좋은 생각일까요? 또는 단일 자식 repo 폴더를 별도로?git repo에서 프로젝트의 다른 부분을 구성하는 방법은 무엇입니까?
답변
별도의 "프로젝트"를 다시 사용하려면 git submodule을 사용해야합니다. 그러나 당신이하지 않으면, 나는 단순히 하나의 유일한 자식에 따라 다른 폴더에서 그들을 분리 할 것이다.
자식 서브 모듈은 "복제"할 수있는 프로젝트를 위해 중대하다 및 기타 (더 큰) 프로젝트를 최신 상태로 유지한다.
하위 모듈을 처리 할 때 약간의 복잡성이 추가된다는 점에 유의하십시오.
단일 모듈이 상당히 독립적 인 경우 git submodule을 사용하여 두 가지 방법을 섞을 수 있습니다. 결국 각 하위 프로젝트에 대한 폴더가있는 단일 폴더/저장소로 끝납니다. 모든 하위 프로젝트는 별도의 저장소이며, 같은 사용할 수 있지만 루트 저장소에서 각 프로젝트의 버전을 추적 할 수있는 능력을 얻을뿐만 아니라, "공동"을 발행하는 것
에서와 같이 하위 모듈 명령git submodule update
또는
git submodule foreach make
에서와 같이 "재귀"명령, 당신은 documentation 및 tutorial 온라인의 일종 찾을 수 있습니다. 여기
내가 별도의 프로젝트로 사람들을 유지할 것git init
git submodule add ssh://.../ncs
...
git submodule add ssh://.../test_network
vim Makefile #write the Makefile for the whole project
git add Makefile
git commit -i -m "Makefile added"
git submodule foreach autoreconf -i
git submodule foreach ./configure
make test
여러 서브 모듈을 포함하는 저장소 (NCS, ..., test_network)를 설정하는 예입니다. git repos를 결합해야하는 경우 항상 git submodules을 사용할 수 있습니다.
나는 프론트 엔드 웹 응용 프로그램 구성 프로젝트, 백엔드 하나, Chrome 확장, 웹 사이트, 몇 공유 라이브러리에 대해 "하나 개의 repo 부품 당"접근 방식을 시도했습니다. 이것은 주로 라이브러리가 GitHub에서 공개되어 있으며 코드의 나머지 부분은 독점적이라는 사실에 의해 결정되었습니다.
- 업데이트가 느렸다 :
이 분명 오픈 소스 화 라이브러리에 대한 큰 일 동안
, 그것은 개인의 repos에 대한 몇 가지 문제를 야기 밝혀졌다. WebStorm (및 다른 IDEs)은이 추가 리포지토리를 확인해야했습니다 (VCS를 동기화 할 때 확인하는 데 약 10 초가 걸렸으며 업데이트가 없었습니다). 나는 현재 프로젝트의 의존 된 각 디렉토리에git pull
했다 쉘 스크립트 작성 결국 (프론트 엔드/백엔드/등.) - 가 되 돌린 예를 들어, 서로에 의존하는 프로젝트의 일부 (이전을 통해 커밋 제공 API 변경)은 쉽지 않습니다 - 다른 repos에서 다른 커밋을 체크 아웃하거나 태그를 항상 사용해야합니다. 커밋 타임 스탬프를 보는 것이 가장 쉬운 방법이었습니다.
나는이 패턴을 발견했습니다 유일한 잘 사용 사례 : 다른 권한이 필요
- 레 포스, 예를 들어,이 오픈 소스 구성 요소 대 독점적 인 repo는 분명히 분리되어야합니다. 그러나 하나의 비공개 저장소는 프로젝트의 여러 부분을 비공개로 유지할 수 있습니다 (예 :프론트 엔드와 백엔드는 동일한 저장소에있는 디렉토리 일 수 있습니다.)
- GitHub에서 별도의 이슈 트래커를 사용하면 "In ..., this happens"로 모든 문제를 시작할 필요가 없습니다.
- 1. 프로젝트의 다른 부분을 실행하도록 사용자를 구성하는 방법은 무엇입니까?
- 2. git merge가 다른 repo에서 변경되었습니다.
- 3. git repo에서 중복 기록을 제거하는 방법은 무엇입니까?
- 4. git repo에서 한 폴더를 삭제하는 방법은 무엇입니까?
- 5. git repo에서 실수로 파일을 제거하는 방법은 무엇입니까?
- 6. git repo에서 파일/폴더를 공유하는 방법은 무엇입니까?
- 7. Git Repo에서 다른 web.configs에 대한 솔루션 찾기
- 8. 다중 프로젝트의 settings.gradle을 구성하는 방법은 무엇입니까?
- 9. git repo에서 BLOB를 삭제하는 방법
- 10. git repo에서 "클라이언트 관련"코드의 "일반"코드를 추출하는 방법은 무엇입니까?
- 11. GIT repo에서 각 개발자를위한 분기
- 12. 프로젝트에 git 저장소를 구성하는 방법은 무엇입니까?
- 13. Git 서버에서 프로젝트를 구성하는 방법은 무엇입니까?
- 14. 원격 git repo에서 커밋을 수정하거나 삭제하는 방법은 무엇입니까?
- 15. 개발 용 Git repo에서 Heroku의 배포판 repo를 유지하는 방법은 무엇입니까?
- 16. 포크 후 부모 Git Repo에서 업데이트를 가져 오는 방법은 무엇입니까?
- 17. git repo에서 composer (satis) 패키지를 저장하는 방법은 무엇입니까?
- 18. svn repo에서 .git 및 .gitignore를 로컬에서 무시하는 방법은 무엇입니까?
- 19. 내 git repo에서 큰 팩 파일을 제거하는 방법은 무엇입니까?
- 20. 기존 repo에서 선택된 파일의 새 git repo
- 21. 이전에 커밋 된 파일을 git repo에서 제거하는 방법은 무엇입니까?
- 22. 기존의 git repo에서 Netbeans 7 프로젝트를 만드는 방법은 무엇입니까?
- 23. git repo에서 가장 많은 파일을 차지하는 파일을 찾는 방법은 무엇입니까?
- 24. git repo에서 정확한 내용의 정확한 파일을 찾는 방법은 무엇입니까?
- 25. Git repo에서 이루어진 모든 변경 사항을 검색하는 방법은 무엇입니까?
- 26. git repo에서 모든 소스의 완전한 플랫 덤프를 만드는 방법은 무엇입니까?
- 27. git repo에서 줄 끝 확인하기
- 28. git repo에서 foo.xcodeproj/xcuserdata를 무시해야합니까?
- 29. 맨손으로 Git repo에서 지점으로 이동
- 30. git repo에서 하위 트리를 밀어 넣기
다음과 같은 몇 가지 심각한 [단점] (http://stackoverflow.com/questions/17875040/how-to-organize-different-parts-of-project-in-git-repo/32237710#32237710)이 있습니다. "부분 당 하나의 repo"접근 방식, 그리고 그 장점이 가치가 있는지 모르겠습니다. –