간단한 자식 명령으로 수동 단계
계획은 개별 디렉토리를 자체 저장소로 분할 한 다음 함께 병합하는 것입니다. 다음 수동 단계는 사용하기 쉬운 스크립트가 아니라 이해하기 쉬운 명령을 사용했으며 추가 N 하위 폴더를 다른 단일 저장소로 병합하는 데 도움이 될 수 있습니다.
나누기
원래 저장소는 다음과 같습니다. original_repo
1-분할 앱 :
git clone original_repo apps-repo
cd apps-repo
git filter-branch --prune-empty --subdirectory-filter apps master
2-분할 라이브러리
git clone original_repo libs-repo
cd libs-repo
git filter-branch --prune-empty --subdirectory-filter libs master
폴더가 두 개 이상인 경우 계속하십시오. 이제 두 개의 새로운 임시 git 저장소가 생깁니다.
앱과 라이브러리를 병합하여 정복
3-새로운 저장소를 준비하십시오.
mkdir my-desired-repo
cd my-desired-repo
git init
그리고 최소한 한 번의 커밋이 필요합니다. 다음 세 줄을 건너 뛰면 첫 번째 리포지토리가 리포지토리의 루트 바로 아래에 나타납니다.
touch a_file_and_make_a_commit # see user's feedback
git add a_file_and_make_a_commit
git commit -am "at least one commit is needed for it to work"
임시 파일이 커밋되면 merge
이후 섹션의 명령이 예상대로 중지됩니다.
와 같은 임의의 파일을 추가하는 대신 사용자의 의견 a_file_and_make_a_commit
을 받아 .gitignore
, README.md
등 을 추가하도록 선택할 수 있습니다 .
4-먼저 앱 저장소 병합 :
git remote add apps-repo ../apps-repo
git fetch apps-repo
git merge -s ours --no-commit apps-repo/master # see below note.
git read-tree --prefix=apps -u apps-repo/master
git commit -m "import apps"
이제 새로운 저장소 안에 apps 디렉토리 가 보일 것 입니다. git log
모든 관련 기록 커밋 메시지를 표시해야합니다.
참고 : 크리스는 자식의 최신 버전 (> = 2.9)에 대한 의견, 아래 언급 한 바와 같이, 당신은 지정해야합니다 --allow-unrelated-histories
으로git merge
5-같은 방법으로 libs repo를 다음에 병합하십시오.
git remote add libs-repo ../libs-repo
git fetch libs-repo
git merge -s ours --no-commit libs-repo/master # see above note.
git read-tree --prefix=libs -u libs-repo/master
git commit -m "import libs"
병합 할 저장소가 두 개 이상인 경우 계속하십시오.
참조 : git을 사용하여 다른 저장소의 하위 디렉토리 병합