git repository 끼리 merge 하기



지난번 내부 gitlab 서버를 구성했었는데 (http://dukwon.tistory.com/3)

키보드와 마우스가 안되는 현상을 없애보고자 이것저것 하다보니

서버가 이상해지고 자꾸 다운 되었다.

서버를 재설치 하고자

부랴부랴 예전 git에 현재의 반영사항을 모두 옮기는 작업을 했던 과정을 글로 남긴다.




Case 설명

여기에 A, B git이 있다.

시작은 A git에서 시작했으나 B git으로 나왔고 많은 commit들이 B에 반영되었다.

심지어 이러한 상황에 A에 commit을 올린사람도 있다.(ㅠㅠ)



이 상황에서 B의 반영사항을 모두 A로 반영하려고 한다.

(둘다 branch는 동일하다고 가정)

이때 생각해야할 절차는


1. 둘다 local에 clone하기

2. A 에서 B를 remote로 등록

3. A에서 B 몽땅 땡겨오기

이다.



1. 둘다 local에 clone하기

이 방법은 이미 알고있으리라 생각하고 생략



2. A에서 B를 remote로 등록

git A에서 git B를 가져올 수 있도록 remote를 걸어두는 것이다.

(하지만 전혀 History를 공유하지 않는다면 3번 과정에서 연관된것이 없다는 에러가 발생할 것이니 유의하자)

$ git remote add [B의 이름] [B의 경로/git clone 주소]

ex1) $ git remote add local ../B

ex2) $ git remote add local https://github.com/nasa/mct.git



3. A에서 B 몽땅 땡겨오기

git이란게 원래 개별 repository 이기 때문에 remote에 있는것과 맞추는 작업이 필요하며

'git fetch' 가 이 역할을 하고

'git merge' 는 실제로 브랜치끼리의 반영사항을 합치는 역할을 한다.(브랜치끼리 통합하려면 이것만 하면 된다.)

$ git fetch [B의 이름]

ex) $ git fetch local


$ git merge [현재 A의 branch와 같은 B의 branch 이름]

ex) $ git merge remotes/local/master


이 과정으로 온전하게 가져올 수 있겠지만

3번 과정에서 confilct가 발생할 가능성이 높고 이를 적절히 처리해야 만 한다.

이것은 git confilict 해결방법을 참고하자.


끝.



Refered from:

http://blog.caplin.com/2013/09/18/merging-two-git-repositories/

https://git-scm.com/book/ko/v1/Git-%EB%B8%8C%EB%9E%9C%EC%B9%98-%EB%B8%8C%EB%9E%9C%EC%B9%98%EC%99%80-Merge%EC%9D%98-%EA%B8%B0%EC%B4%88

'Git' 카테고리의 다른 글

git 트러블 슈팅(trouble shooting)  (0) 2017.02.22
Git 개념과 사용법  (0) 2017.02.08
gitlab 서버 구성하기  (0) 2017.02.08

+ Recent posts