본문 바로가기

Git & GitHub

Git repository 합치기 - subtree

반응형

자바스크립트로 다양한 미니게임을 만들면서 공부중인데, 기록은 하고싶고.. 매번 저장소를 만들자니 너무 남용되나 싶어서 미니게임을 한번에 보관하고자하는 저장소를 만들기로 하였다.

 

이전에 저장소를 만들어서 올려둔 타이머도 함께 보관하기 위해서 깃 저장소를 합치는 방법을 구글링해보았다.

 

👩‍🔧  시도 >

 

현재 만들어둔 저장소에 바로 진행하기에 실패확률이 있어서 test 파일을 2개 만들어서 진행해보기로 했다.


1. testfile 1

- text1 파일이 담겨있는 폴더 1개가 담겨있다.

 

test1project-folder

  • text 1

 

2. testfile 2

- text 파일이 2개가 담겨있다.

 

  • text 2
  • text 3

 

 

📄 확인해야 할 결과물

  • testfile2 저장소에 담겨진 파일을 하나의 폴더로 합쳐서 testfile1 저장소에 담아야한다.
  • 커밋 히스토리까지 가져와야 한다.

 

 

1. 상위 저장소에서 진행

 

 > testfile1에서 git bash를 실행하여 진행하였다.

 

 

2. 원격 참조 추가

 

#git remote add 참조시이름 저장소주소
>git remote add testfile2-repo http://~.git

 

- '참조시이름' 에는 subtree명령어 진행시 참조될 이름이므로 원하는대로 임의작성하면 된다.

- '저장소주소'에 testfile2의 주소를 붙여넣기한다. (저장소주소는 해당저장소 url.git 이다.)

 

 

#git remote -v

 

- 위 명령어를 통해 제대로 추가됐는지 확인 가능하다.

 

 

3. subtree 추가

 

#git subtree add --prefix=폴더이름 참조시이름 브랜치이름
>git subtree add --prefix=test2project-folder testfile2-repo master

 

- '폴더이름'은 testfile1에 testfile2가 추가될 폴더이름이다.

- '참조시이름'에 1번에서 작성한 이름을 작성한다.

- '브랜치이름', 어느 브랜치에서 add할건지 정해준다. 

 

 

4. push

 

>git add tesefile2project-folder
>git commit -m "project combined"
>git push origin master

 

- 이제 평소하던대로 push를 진행하면 된다.

 

 

 

📄  결과  >

✅ testfile2 저장소에 담겨진 파일을 하나의 폴더로 합쳐서 testfile1 저장소에 담아야한다.

커밋 히스토리까지 가져와야 한다.

❎ 커밋 히스토리를 전부 가져왔지만, 마지막에 push할때 commit 내용이 제대로 작성되지 않았다.. 이유가 뭘까..

 

👍 


1. testfile 1

 

test1project-folder

  • text 1

test2project-folder

  • text 2
  • text 3

- testfile1 저장소에 testfile2인  'test2project-folder' 폴더 하나로 합쳐져서 제대로 병합이 되었다.

- commit 내용도 전부 가져와졌다.

 

👎

 

- 마지막 commit에 분명히 'project combined'로 작성했는데 아래와 같은 commit내용이 올라갔다... 왜그런지.. 모르겠다.. 다시 공부해야겠ㄷ.....

 

> Add 'popoproject/' from commit 'b7698eda67d5e24b9da16c62cb41060f38e5…78c'