Merge Two Repositories
github를 하다보니 쓸데 없이 저장소를 나누어 놓고 쓰고 있더라..
그러다보니 이게 여기다 올려야 하는지 아닌지도 모르겠고…
일명 대환장파티 레포지토리라고 해야 할까..
그래서 시도를 해보았다. (스프링 공부나 할 것이지)
- 저장소 병합 (서브 트리 이용) — 별로다..
- 요우님 블로그 (cherry-pick 이용) —이게 맞는건가 싶었다.
- 스택오버플로우 형님들 (걍 머지 때려라)
처음에는 그냥 머지를 해보았다.
참고 : 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 |