IT/git

[git] GitHub 여러 Repository 하나로 합치기 (커밋 로그 유지하면서)

snapcoder 2024. 9. 4. 22:21
728x90
반응형
SMALL

[git] GitHub 여러 Repository 하나로 합치기 (커밋 로그 유지하면서)

 

 

GitHub를 관리하던 중에,
여러 repository를 합쳐야 하는 순간이 있었다.

commit log를 유지하면서 Git Repository를 합치는 방법을 기록하고자 한다.

 

깃허브에서 새로운 레포지토리를 생성 후

해당 신규 레포지토리에 옮기고 싶은 레포지토리들을 다 넣을 것이다.

 

커밋했던 내역들이 그대로 복사되어 온다.

다만 문제점은 파일 하나하나의 히스토리는 열람하지 못한다.

 

subtree를 이용할거다!

 

 

 

 

엄청 옛날에 잠시 만졌었던 드론 3d모델링 프로젝트 소스를 합쳐볼까나..

추억이다..

 

 

 

 

 

1. 윈도우에 git 설치

https://git-scm.com/downloads

 

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. 기존 커밋 히스토리 확인

728x90
반응형
LIST