프로그래밍/Git 관련

Merge Two git repositories

seungdols 2017. 5. 28. 22:33

Merge Two Repositories

github를 하다보니 쓸데 없이 저장소를 나누어 놓고 쓰고 있더라..

그러다보니 이게 여기다 올려야 하는지 아닌지도 모르겠고…

일명 대환장파티 레포지토리라고 해야 할까..

그래서 시도를 해보았다. (스프링 공부나 할 것이지)

  1. 저장소 병합 (서브 트리 이용) — 별로다..
  2. 요우님 블로그 (cherry-pick 이용) —이게 맞는건가 싶었다.
  3. 스택오버플로우 형님들 (걍 머지 때려라)

처음에는 그냥 머지를 해보았다.

참고 : merging two git repositories

실패했다.

$ g merge practice_js/master
fatal: refusing to merge unrelated histories

다른 히스토리를 가졌으니 안된다고 한다.

그 다음으로 요우님 방법으로 시도를 했다. (그냥 머지는 안된다고 알려주셨다..😊😊)

요우님 블로그 발췌

git checkout merge/PP
git log #에서 가장 최근의 Commit SHA값을 복사해둔다.
git checkout master
git cherry-pick 9ede61845d75411e8cef35303b6eeaa5d7c26bdb

그런데 생각보다 블로그에 나와 있는 글에는 마지막 해시 값만 넣으면 된다는 뉘앙스로 써져 있었으나, 그게 아니라 커밋 자체를 모두 체리픽으로 가져오는 것인 것 같았다. (이해를 잘 못 했을 수도 있다.)

나의 경우 마지막 해시 값을 가져오니 딱 그 해시 값만 가져오더라..
(방법을 잘못 따라한 것 같다.) 😂😂😂

그래서 검색했다… 무언가 방법이 있을 것만 같다.

찾았다..👍👍👍 스택오버 플로우 누님/형님들은 대단하다.

참고 : how do you merge two git repogitories

방법은 이렇다..그냥 머지 하면 된다.

단, 다른 히스토리인 것도 허용한다는 옵션을 준다.

cd path/to/project-b
git remote add project-a path/to/project-a
git fetch project-a
git merge --allow-unrelated-histories project-a/master  #or whichever branch you want to merge
git remote remove project-a

위처럼 옵션을 준 결과

git merge --allow-unrelated-histories practice_js/master
Auto-merging README.md
CONFLICT (add/add): Merge conflict in README.md

바로 이렇게 README.md에서만 conflict가 난다.
이것만 해결해주면 된다. ^^ (찡긋😉)👍👍


실제 하는 방법 예시)

저의 깃허브 (망작 코드) 레포지토리를 한 번 모아보도록 하겠습니다.

원래, 따로 나누어진 레포지토리인데, 하나로 한데 모으는게 좋을것 같아서요.

  • practice

  • alogorithm_study

위 두 레포지토리를 합쳐 보도록 하겠습니다.

우선 practice repo를 로컬에 clone받도록 합니다. 그 후에 아래 명령어를 입력해주었습니다.


git remote add algorithm /**repo 주소**/

그 후 아래의 명령어로 레포지토리의 내용을 하나로 합치도록 합니다.


git merge --allow-unrelated-histories algorithm/master

그럼 README.md 파일이 겹치므로 하나로 병합하는 작업이 필요로 합니다.

즉, Conflict를 해결해주면 됩니다.

그리고 난 뒤에 수정 된 파일을 add를 하여 working tree로 올린 뒤에 commit을 하고 push 하면 끝나는 step입니다.

반응형

'프로그래밍 > Git 관련' 카테고리의 다른 글

Jenkins - Github webhook 302 이슈  (0) 2023.03.03
[Git] Alias 사용하기  (0) 2017.01.01