2010-07-14 5 views
12

나는 여러 프로젝트를 GitHub.com에 게시하고 싶습니다. 이 모든 프로젝트는 내 로컬 Git 저장소에 있습니다. 하나의 저장소 만 있지만 각 프로젝트마다 1 개의 GitHub 프로젝트가 필요합니다. 그렇게하면 프로젝트에서 버그를 정리할 수 있습니다.하위 폴더에서 하위 프로젝트를 여러 개 만들었습니까?

어떻게 관리하기가 어렵지 않도록 설정할 수 있습니까? 내 저장소 레이아웃을 다시하고 각 프로젝트에 대해 새 git 저장소를 로컬로 만들어야합니까? 그건 정말 시간이 관련 될 것이며 나는 힘내 역사를 잃을 수도 있습니다. 내가 질문을 이해 해요 경우 월터

답변

15

리포가 구성되는 방식에 따라 git filter-branch을 사용하여 각 프로젝트의 히스토리를 보유하고 각 프로젝트의 새 리포를 만들 수 있습니다. .

현재 REPO 구조를 가정하면 다음과 같이이다 :

repo/ 
    project1/ 
    project1-file 
    project2/ 
    project2-file 
    project3/ 
    project3-file 

할 수 있습니다 첫 번째 당신의 repo를 복제 (git filter-branch 원래의 repo 파일을 그들의 역사를 제거하므로 복제해야합니다 첫번째) . 그런 다음 복제 REPO에, 당신은 project1의 루트 (모든 오래된 역사를 가진) 새로운 REPO를 만들 git filter-branch을 사용할 수 있습니다 : 이제

$ git filter-branch --subdirectory-filter project1 HEAD 

, 당신의 repo는 다음과 같이 표시됩니다

repo/ 
    project1-file 

그리고 이전 repo에 project1/ 아래에 저장된 모든 파일의 기록을 계속 포함합니다.

각 프로젝트마다이 단계를 반복하면 관련 프로젝트의 모든 기록이있는 3 개의 독립적 인 repos가 생깁니다.

+0

고마워, 그게 정확히 내가 원하는 것처럼 보입니다. –

5

, 당신은 프로젝트의 숫자를 포함하는 하나의 큰 REPO있어. 역사를 잃지 않고 각 프로젝트를 개별 리포지토리로 나누고 싶습니다. 결론은 네입니다. 저장소 레이아웃을 다시하고 각 프로젝트에 대한 새로운 git 저장소를 만들어야합니다. 그래도 역사를 잃을 필요는 없습니다.

  1. 각 하위 프로젝트에 대해 현재 사본 1 부를 만듭니다.
  2. 새 저장소 각각에서 해당 저장소와 연결된 프로젝트를 제외한 다른 모든 프로젝트를 삭제하십시오.

원본 레포를 깨기 전에 모든 기록이 남아 있지만 각 프로젝트는 자체 저장소입니다.

히스토리를 잃어 버릴 염려가 없다면 프로젝트 디렉토리에 git init을 실행하는 것만 큼 간단합니다. 이렇게하면 해당 프로젝트에 대한 새로운 레포가 생성됩니다.

+0

그건 의미가 있습니다. 나는 내가 할 일은 후자의 프로젝트마다 git init을하는 것이라고 생각한다. 내가 github에 게시 할 준비가되면, 비교적 깨끗한 코드베이스를 갖고 싶습니다 ... –

관련 문제