[git] GitHub 여러 Repository 하나로 합치기 (커밋 로그 유지하면서)
GitHub를 관리하던 중에,
여러 repository를 합쳐야 하는 순간이 있었다.
commit log를 유지하면서 Git Repository를 합치는 방법을 기록하고자 한다.
깃허브에서 새로운 레포지토리를 생성 후
해당 신규 레포지토리에 옮기고 싶은 레포지토리들을 다 넣을 것이다.
커밋했던 내역들이 그대로 복사되어 온다.
다만 문제점은 파일 하나하나의 히스토리는 열람하지 못한다.
subtree를 이용할거다!
엄청 옛날에 잠시 만졌었던 드론 3d모델링 프로젝트 소스를 합쳐볼까나..
추억이다..
1. 윈도우에 git 설치
Git - Downloads
Downloads macOS Windows Linux/Unix Older releases are available and the Git source repository is on GitHub. GUI Clients Git comes with built-in GUI tools (git-gui, gitk), but there are several third-party tools for users looking for a platform-specific exp
git-scm.com
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. 기존 커밋 히스토리 확인
'IT > git' 카테고리의 다른 글
[git] Fetch from origin시 lock fail 오류 발생 (이클립스) (0) | 2024.09.25 |
---|---|
[git] Contribute to Apache (아파치 오픈소스 기여 경험기) (2) | 2024.09.13 |