팀 프로젝트의 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을 사용하기 떄문에 가급적 변경없이 그대로 사용한다.
'사이드 프로젝트 > Git' 카테고리의 다른 글
[팀장 편] 팀 프로젝트 github 사용법 (git bash) (2) | 2022.12.12 |
---|