728x90
반응형
SMALL
[git] GitHub 여러 Repository 하나로 합치기 (커밋 로그 유지하면서)
GitHub를 관리하던 중에,
여러 repository를 합쳐야 하는 순간이 있었다.
commit log를 유지하면서 Git Repository를 합치는 방법을 기록하고자 한다.
깃허브에서 새로운 레포지토리를 생성 후
해당 신규 레포지토리에 옮기고 싶은 레포지토리들을 다 넣을 것이다.
커밋했던 내역들이 그대로 복사되어 온다.
다만 문제점은 파일 하나하나의 히스토리는 열람하지 못한다.
subtree를 이용할거다!
엄청 옛날에 잠시 만졌었던 드론 3d모델링 프로젝트 소스를 합쳐볼까나..
추억이다..
1. 윈도우에 git 설치
2. 새로운 Repository 만들고 URL 주소 복사 (Clone)
3. 로컬 저장소(컴퓨터PC)에 신규 Repository 복제
cd <C드라이브 어딘가의 신규 디렉토리 경로>
# 복제
git clone <url> # 새로 만든 부모 레파지토리 주소값
디렉토리 생겼으면 cd로 들어가면 (master) 가 뜰겁니다
4.Remote 추가
git remote add <리모트명> <레포지토리 url>
사진상 child1과 child2가 합쳐짐을 당할 녀석들
5. 합치는 작업 시작 (subtree 생성)
주의 : 합쳐짐을 당하는 각각의 Repository마다 루트 브랜치명이 'main'인지 'master'인지 잘 보고 작업해주자!
브랜치명 다를경우 다음의 에러가 발생한다.
git subtree add --prefix=<저장할 폴더명> <자식의 remote명> <자식의 branch명>
당황하지마라.
clone(복제)한 신규 Repository는 새롭게 생성 후 어떠한 행동(commit, push)를 하지 않았기 때문에
아래의 에러가 발생한거다.
Working tree has modifications. Cannot add.
위 문제를 해결하고자 commit 기록을 남긴 후 재도전하면 된다.
git add .
git commit -m 'repository merge'
6. Push
git push
7. 기존 커밋 히스토리 확인
728x90
반응형
LIST
'IT > git' 카테고리의 다른 글
[git] Fetch from origin시 lock fail 오류 발생 (이클립스) (0) | 2024.09.25 |
---|---|
[git] Contribute to Apache (아파치 오픈소스 기여 경험기) (2) | 2024.09.13 |