상황 예를들어서 내가 백엔드 관련 작업을 A 라는 레포지토리에서 진행하고 해당 부분은 커밋을 push하며 작업을 하고 있다고 가정하자. 그와 동시에 프론트엔드 담당자는 B 라는 레포지토리에서 자신의 작업을 진행하며 커밋을 push하며 작업을 하고 있다고 가정하자. 이때 나는 이 A, B 두개 레포지토리의 커밋 히스토리를 전부 가진 상태로 Project(루트 폴더) - A 내용 - B 내용 형식으로 구성을 해주고 싶다. 이때 어떻게 해야할까?! 실제로 루트 폴더(레포지토리 명)의 이름은 같이 안 가져오고 내용물만 가져온다. 시도 실제로 로컬에서 clone 해온 A 디렉토리에 B 디렉토리를 옮기고 해봐도 해결이 안되었다. 첫째로는 .git 파일이 여러개면 충돌이 나서 문제가 생겼었고. 둘째로는 한쪽의 .git 파일이 없는 상태로 합치면 한쪽의 커밋 히스토리가 남지 않았다... 해결 git pull origin master --allow-unrelated-histories Git refusing to merge unrelated histories on rebase Asked During git rebase origin/development the following error message is shown from Git: fatal: refusing to merge unrelated histories Error redoing merge 1234deadbeef1234deadbeef My Git version is 2.9.0. It used to work fine in the previous version. How can I continue this rebase allowing unrelated histories with the forced flag introduced in the new release? https://stackoverflow.com/questions/37937984/git-refusing-to-merge-unrelated-histories-on-rebase/41765529#41765529 위 명령어를 쓰면 해결이 될 것이라는 스택오버플로우 자료를 공유받았다. 생각한 방향은 이렇다. A. 둘 중 하나를 선택시 A나 B 레포지토리 중 한개를 선택해서 들어간다. git remote -v 를 했을때 origin 부분만 설정되어 있을텐데 내가 선택한다. 해당 위치에서 남은 레포지토리를 upstream 으로 설정한다. git remote add upstream B의 주소 # A 를 선택했을 시 git remote add upstream A의 주소 # B 를 선택했을 시 4. pull로 --allow-unrelated-histories 로 upstream의 master 브랜치를 가져옴 git pull upstream master --allow-unrelated-histories B. 새로운 레포지토리를 만들시 새로운 레포지토리를 생성한다.(이후에 당연히 clone으로 로컬로 땡겨온다) 새로운 레포지토리에서 A를 upstream으로 설정하고 --allow-unrelated-histories 로 땡겨온다. git remote add upstream A의 주소 git pull upstream master --allow-unrelated-histories 새로운 레포지토리에서 B를 upstream으로 설정하고 --allow-unrelated-histories 로 땡겨온다. git remote add upstream B의 주소 git pull upstream master --allow-unrelated-histories 결과 나는 A 방식으로 진행했는데 결과는 성공!! B 레포지토리의 커밋 기록 응용 그렇다면 A | B - django | - front 로 나눠져 있는 레포지토리를 Project - server - django - front 이와 같은 구조로 변경해주려면 어떻게 해야할까?! 새로운 레포지토리를 Project 이름으로 만든다. A 레포지토리를 remote upstream으로 등록하고 pull --allow-unrelated-histories 한다. B 레포지로티를 remote upstream으로 등록하고 pull --allow-unrelated-histories 한다. 이때 구조는 Project - django - front 일 것이다. 5. 이후에는 오히여 간단하다. 루트 위치에서 server라는 폴더를 만들어주고 django를 넣어준다. 끝!!!
Git 레포지토리 병합하기2 - 커밋 히스토리도 가져오기
지난 1편에 이어서 써본다.
wooogy-egg.tistory.com/3?category=937959
이후에 완벽하게 해당 레포지토리 병합 문제(커밋 히스토리 전부 다 가져오기)를 이해하고 있지 못했었는데,
이번 기회에 한번 더 공부해 보았다.
상황
예를들어서
내가 백엔드 관련 작업을 A 라는 레포지토리에서 진행하고 해당 부분은 커밋을 push하며 작업을 하고 있다고 가정하자.
그와 동시에 프론트엔드 담당자는 B 라는 레포지토리에서 자신의 작업을 진행하며 커밋을 push하며 작업을 하고 있다고 가정하자.
이때 나는 이 A, B 두개 레포지토리의 커밋 히스토리를 전부 가진 상태로
형식으로 구성을 해주고 싶다.
이때 어떻게 해야할까?!
실제로 루트 폴더(레포지토리 명)의 이름은 같이 안 가져오고 내용물만 가져온다.
시도
실제로 로컬에서 clone 해온 A 디렉토리에 B 디렉토리를 옮기고 해봐도 해결이 안되었다.
첫째로는 .git 파일이 여러개면 충돌이 나서 문제가 생겼었고.
둘째로는 한쪽의 .git 파일이 없는 상태로 합치면 한쪽의 커밋 히스토리가 남지 않았다...
해결
위 명령어를 쓰면 해결이 될 것이라는 스택오버플로우 자료를 공유받았다.
생각한 방향은 이렇다.
A. 둘 중 하나를 선택시
4. pull로
--allow-unrelated-histories
로 upstream의 master 브랜치를 가져옴B. 새로운 레포지토리를 만들시
--allow-unrelated-histories
로 땡겨온다.--allow-unrelated-histories
로 땡겨온다.결과
나는 A 방식으로 진행했는데 결과는 성공!!
응용
그렇다면
--allow-unrelated-histories
한다.--allow-unrelated-histories
한다.일 것이다.
5. 이후에는 오히여 간단하다. 루트 위치에서 server라는 폴더를 만들어주고 django를 넣어준다.
끝!!!
'기술개발 > Git, Github' 카테고리의 다른 글