본문 바로가기
사이드 프로젝트/Git

팀 프로젝트가 끝난 후, 해당 소스코드를 내 GitHub로 옮겨와서 이어가는 방법

by 코딩맛집 2022. 11. 16.

팀 프로젝트의 repository(==repo라고 부른다.)를 나의 GitHub로 가져오고 싶었다.

소스코드가 다른 멤버의 깃허브에 있었고 가져와서 좀 더 develop하고 싶은 마음에 다른 멤버의 소스 코드에 영향을 주고 싶지 않았다. 단, 과거의 commit, branch 그리고 tag history는 그대로 살려오고 싶었다. 그 방법을 잘 정리해둔 블로그를 보았고 내 관점에서 다시 풀어 블로그에 기록하고 찾아보려 포스팅을 한다.

 

STEP 1. 오리지널 repo의 소스코드를 clone한다.

[가져오려는 멤버(내가 아닌) GitHub에 repo를 내 PC로 복붙하는 방법!!]

  • 나의 GitHub에 repo(폴더)를 만들고 '내 폴더'에 내가 관리하려는 폴더를 같은 이름으로 만들었다.
  • cmd 창에서 '내 폴더'에 미리 만든 폴더의 상위 폴더까지 경로를 이동하고 아래 명령어를 실행한다. (해당 branch와 tag를 전부 가져오기 위함.)
git clone --mirror <오리지널 repo 주소> <내 로컬 폴더>

<오리지널 repo 주소>는 팀 프로젝트 소스코드가 존재하는 친구의 주소이다. 가져오려는 소스 코드 폴더를 누르면 오른쪽에 아래와 같은 button이 있다. 이것을 클릭하면 소스 코드의 주소를 복사할 수 있다. <내 로컬 폴더>는 ' 내 폴더'에 방금 내가 생성한 폴더 이름을 적어주면 된다.   

위 버튼을 클릭하면 복사해 올 깃허브 주소 존재

git clone --mirror의 옵션을 주면 원격 repo(==깃허브 주소)의 모든 참조(== 모든 tag, branch  등)가 그대로 복사된다. 즉, 원본의 repo를 남김없이 가져온다는 의미이다. 여기서 끝내면 주소를 바꿔주지 않았기 때문에, 내가 소스코드를 작업하고 push를 하면 <오리지널 repo 주소>로 넘어간다. 

 

STEP 2. 다른 멤버 주소로 되어 있는 repo를 나의 GitHub repo로 연결한다.

이 때, Readme, gitignore 등이 없는 repo 만들기를 추천한다. 다른 file이 존재하면 push할 때 충돌이 생길 수 있기 때문에 이를 예방하는 용도인것 같다.

 

내 ID가 user이고 새로운 깃의 repo이름을 world라고 지었으면 아래와 같이 주소가 된다. 

https://github.com/<내 깃허브 ID>/<새로 만든 나의 repo 이름>

 

다시 cmd 창으로 돌아와서! 아래 명령어를 실행하고 

git remote set-url origin https://github.com/<내 깃허브 ID>/<새로 만든 나의 repo 이름>.git

푸시 명령어를 실행해준다.

git push

 

STEP 3. 변경이 잘 되었는지 확인하기.

내 깃 허브에 들어가서 직접 확인해도 되고 cmd창에서 아래와 같은 명령어를 실행하여 확인해 볼 수 있다.  

git remote -v

 

위와 같은 과정은

현재의 폴더가 연결된 원격 저장소의 주소를 끊고 새롭게 나의 원격 저장소로 연결하고, 연결할 때 저장소의 이름은 origin으로 한다.는 과정이다.

 

* 용어 정리

remote란? remote repository(원격 저장소). 내 PC가 아닌 네트워크 상에 존재하는 저장소를 말한다. 여러 사람이 공동 작업할 수 있는 오리지널 저장소를 remote라고 부른다. 이 오리지널 저장소는 별도의 서버가 될 수도 있고, GitHub 혹은 GitLab과 같은 공간이 될 수도 있다. git remote는 현재 내 PC에 있는 저장소를 원격 저장소로 연결하겠다는 의미이다.

 

origin이란? origin 파라메터는 내가 저장하는 저장소의 이름을 'origin'으로 정하겠다는 의미이다. 이 부분은 변경해도 되지만, 관례적으로 origin을 사용하기 떄문에 가급적 변경없이 그대로 사용한다.