Github Repository 병합

SeungJoo
|2024. 8. 23. 15:21
728x90

Github Repository 병합

Git을 사용하여 여러 레포지토리를 하나로 병합하는 과정을 설명하겠습니다. 이 과정에서는 서브트리(SubTree) 기능을 사용하며 기존 레포지토리들을 하나의 새 레포지토리에 추가하는 방법입니다.

1. 새로운 레포지토리 생성 및 클론

먼저 GitHub에서 새로운 레포지토리를 생성하고, 해당 레포지토리를 gitbash & 터미널로 로컬에 클론 합니다. 이때, Test 폴더가 생성될 것입니다.

git clone https://github.com/Joo-Veloper/Test.git
cd Test

2. 각 레포지토리 서브트리로 추가하기

 

기존의 레포지토리들을 각각 서브트리로 추가합니다. 이때 각 레포지토리를 저장할 폴더 이름을 지정하고,

--prefix 옵션을 사용합니다. (예를 들어 `DATA_JPA`라는 폴더에 해당 레포지토리를 추가하려면 다음과 같이 명령어를 입력합니다.)

git subtree add --prefix={레포 이름} {합치는 레포 주소} {레포의 브렌치}
git subtree add --prefix=DATA_JPA https://github.com/Joo-Veloper/DATA_JPA.git main

 

이렇게 하면 오류가 발생합니다.

3. 오류 발생 시 해결 방법

ambiguous argument 'HEAD':unknown revision or path not in the working tree" Error

이 Error 리포지토리에 기본 브랜치(main 또는 master)가 없거나, 아직 커밋이 없는 경우에 발생합니다.

4. 해결 방법

1. 최초 커밋을 생성하여 오류를 해결할 수 있습니다.

git commit --allow-empty -m "Initial commit"

위 명령어는 아무 내용이 없는 최초의 빈 커밋을 생성합니다.

 

2. working tree has modifications. Cannot add. 오류

작업 트리에 변경 사항이 있을 때 발생하며, Git은 추가 작업을 진행하기 전에 변경 사항을 처리하도록 요구합니다.

 

※ 변경 사항 커밋하기

git add .
git commit -m "Save changes before adding subtrees"

 

이 명령어로 모든 변경사항을 커밋하여 작업 트리를 깨끗하게 만듭니다.

 

※  변경사항 버리기

git reset --hard

이 명령어를 작업 트리의 모든 변경사항을 버리고, 마지막 커밋 상태로 되돌립니다. 작업 중인 변경 사항을 유지하고 싶다면 이 방법은 사용하시면 안 됩니다!!

5. 서브 트리 추가 명령어 다시 추가하기 

위 문제들을 해결한 후, 다시 서브트리 추가 명령어를 실행 후 git puhs {브렌치명}을 실행하면 성공적으로 레포지토리 서브트리로 병합할 수 있습니다.

git subtree add --prefix={레포 이름} {합치는 레포 주소} {레포의 브렌치}
git subtree add --prefix=DATA_JPA https://github.com/Joo-Veloper/DATA_JPA.git main

728x90

'GIT' 카테고리의 다른 글

Git Push ERROR(refusing to merge unrelated histories)  (0) 2024.02.29
failed to push some refs to  (0) 2023.11.17
LF will be replaced by CRLF  (0) 2023.11.11