본문으로 바로가기
반응형

기존에 텀 프로젝트를 통해 총 3대의 서버에 자료를 분산시켜놨었다.

서버 포맷 겸 백업을 진행하려고 했는데 하나의 저장소에 병합시키는 방법을 몰랐었다.

오늘 그 방법에 대해 포스팅하겠다.

2개의 git을 하나의 repository에 push 하는 방법이다.

작업은 git_test라는 디렉토리를 하나 만들어서 진행할 것이다.


먼저 github에서 test라는 새로운 repository를 만들었다.


push 해줄 두개의 파일을 만들었다.

serverA/serverA 파일을 먼저 push한 이후

serverB/serverB 파일을 동일한 repository에 push 해보겠다.


init, add, commit후 push해줬다.

여기까지는 기존 push하는 방법과 동일하다.


생성한 repository에 들어가보면 방금 push한 파일이 올라와있다.


init 후 checkout을 통해 ServerB라는 이름으로 Branch한다.

그리고 remote 등록해준 후 상태를 보면 위와 같이 정상적으로 연결되어 있는걸 볼 수 있다.


Server B에서도 동일하게 add, commit을 해준다.

그리고 push해준 후 repo를 살펴보자.


위와 같이 새로운 branch가 생성된 걸 알 수 있다.

그런데 우리가 직접 branch를 선택해서 바꿔줘야 push한 파일이 보인다.

나는 하나의 branch, master 브랜치에서 모든 파일을 보고싶다.

다시 Server B로 들어가서 master로 바꿔준다.


checkout으로 master로 바꿔줬다.

이제 master와 ServerB를 merge해준다.

git merge --allow-unrelated-histories ServerB 를 입력해서 merge한다.

그냥 merge를 하면 history가 다르기 때문에 에러가 발생하기 때문에 옵션을 줬다.


위와 같이 나오면 성공적으로 merge가 된 것이다.

현재 디렉토리를 확인해본다.


기존에 업로드 한 serverA와 serverB 둘 다 디렉토리에 존재한다.

이제 push 해준다.


push 후 github repository를 확인해본다.


Merge 했다는 알림이 나오며 master 브랜치에 A, B두개의 파일이 들어있다.


하지만 브랜치 목록을 확인해보면 아직도 ServerB가 존재한다.

지우고 싶다.


git push에 --delete 옵션을 넣어줬다.


성공적으로 삭제됐다.

총 명령어를 정리해보면 아래와 같다.


[Server A]

git init

git add --all

git commit -m "Message"

git remote add origin https://github.com/teamhide/test.git

git push -u origin master


[Server B]

git init

git checkout -b ServerB

git remote add origin https://github.com/teamhide/test.git

git remote -v

git add --all

git commit -m "Message"

git push -u origin ServerB

---------------------------------------------여기까지 하면 branch 됨

[Server B]

git pull // 동기화

git checkout master

git merge --allow-unrelated-histories ServerB

git push -u origin master

git push origin --delete ServerB


thx to x86kernel

반응형