Git 레포지토리 병합하기

반응형
  • 현재 상황
  • 현재 Flutter & DRF 프로젝트를 진행한 상황이다.
  • 하지만 실제 Flutter 부분과 아래의 Django+DRF 부분을 분리하여 레포지토리를 만들고 push 하였다
  • 깔끔하게 Flutter-DRF 레포안에 두 레포를 한번에 놓고 커밋 내역 역시 합치고 싶은 생각이 들었다.

 

  • 처음 시도:

Flutter-DRF 레포의 상위 폴더를 만들어주고 .git과 .gitignore를 상위 폴더로 옮겨주었다. 추후 drf_quiz_test의 Django-DRF 부분 레포를 상위폴더로 옮겨주었는데, .git이 여러개라 git 충돌이 발생해버렸다. 또한 drf_quiz_test의 .git을 삭제하니 트랙킹하던 파일 역시 삭제되어 버리는 문제가 발생했다..

해당 경우에 깔끔하게 병합하는 방법이 없을까?

 

  • 로컬에서 꼬여있는 상위폴더 전체 삭제 진행

우선적으로 상위폴더를 전체 삭제한 후 각각 레포지토리에서 Flutter-DRF(A), drf_quiz_test(B)를 클론해왔다. 편의상 A, B로 부르기로 한다.

❯ git clone https://github.com/SeungWookHan/Flutter-DRF.git
❯ git clone https://github.com/SeungWookHan/drf_quiz_test.git
❯ ls -al
drwxr-xr-x  13 Han  staff   416B Dec 29 17:48 Flutter-DRF
drwxr-xr-x  10 Han  staff   320B Dec 29 17:48 drf_quiz_test

 

  • 병합

1) 로컬에서 A로 이동해주었다

❯ cd A

2) B를 A에 병합한다 & gitignore 충돌

❯ git remote add B ../B
❯ git fetch B
❯ git merge --allow-unrelated-histories B/master

# Conflit 발생... -> .gitignore가 양쪽 다 있었기에 충돌 해결해야함.
# 이 부분은 위 과정 git merge 전에 해줘야 되었을 것 같시는 하다.
❯ git reset .gitignore
❯ git remote remove drf_quiz_test
❯ git commit -m "drf_quiz_test into Flutter-DRF"

# 이제 해당 레포 두개가 합쳐진 것을 확인 가능하다. 나는 여기서 따로 각각 파일별 폴더별로 묶어주었다.
# 만약 미리 A폴더 안에 서브폴더를 만들고, B폴더 안에 서브폴더를 만들어서 넣어 놓은 상태로 시작했다면
# 위 과정은 필요 없었을 것이다.
# 추가 적으로 .gitignore 충돌난 부분을 해결해주었다.
❯ git push origin master

3) 결과 확인

  • 잘 병합완료 되었고 기존 drf_quiz_test 레포는 삭제해주었다.
  • 의문사항: 커밋도 전부 합쳐지길 기대했지만 drf_quiz_test의 커밋은 합쳐지지 않은 것 같다... 커밋이 1개만 있었어서 그런걸까?!

해당 깃허브 링크: github.com/SeungWookHan/Flutter-DRF

반응형