GitLab commit으로 GitHub에 잔디심기 (GitLab → GitHub 미러링)
ssafy에서 GitLab을 사용하다보니 Github 잔디가 휑해 보였다. 물론 잔디에 집착하는 사람은 아니지만, 탈모걸린 잔디밭에 약간이라도 생기를 불어넣어주고자 GitLab commit을 Github으로 연동할 방법을 찾아보았다.

비어있는 GitHub에 GitLab Commit으로 잔디를 심어봅시다
- 이 방법은 main branch 에 올라간 commit 만 반영이 되니 외않되!? 를 외치지 말고 main branch로 merge할 금요일에 다시 확인해봅시다.
- 먼저 github token이 필요합니다. token이 없으신 분은 먼저 발급받고 진행해주세요.
1. GitHub에서 새 레포를 만든다.

외부로 반출할 수 없는 코드라면 Private 레포로 만들자!

레포지토리를 생성했다면 레포지토리 주소를 복사한다.
2. GitLab 레포지토리로 이동한다


두번째 mirroring repositories의 Expand 를 클릭

Git repository URL은 아까 복사한 repo 주소에서 위사진에서 보이는 것과 같이 앞에 username@
을 덧붙여야 한다.
최종주소는 https://<깃허브 username>@github.com/<깃허브 username>/<repo 이름>.git
의 형태
Password에는 github token
을 입력하면 된다.
잠시만 기다리면 이렇게 mirroring이 완료된 것을 확인할 수 있다!

3. 잔디밭 옵션 바꾸기

mirroring이 성공적으로 진행되었는데도 잔디밭 상태가 그대로라면?
잔디밭의 오른쪽 Contribution settings에서 Private contributions 의 옵션을 클릭해서 활성화해주세요!
그러면 profile에서도 업데이트된 잔디밭을 볼 수 있습니다 🙂
4. Github email과 GitLab email이 다른 경우
github email와 gitlab email이 다르다면, 자동으로 커밋 반영이 안된다! 이 경우 두가지 방법이 있다.
4-1. 이메일을 추가해서 등록하기
4-2. 커밋내역의 이메일을 필터링해서 바꾸기
4-1. repo clone 받기
위에서 복사한 레포 주소를 로컬에 클론한다.
$ git clone "repo 주소"
4-2. 바꾸기
git filter-branch --commit-filter '
if [ "$GIT_AUTHOR_EMAIL" = "//찾아서 바꿀 이메일 주소 입력//" ];
then
GIT_AUTHOR_EMAIL="//바꿀 이메일 주소 입력//";
git commit-tree "$@";
else
git commit-tree "$@";
fi' HEAD
이 명령어를 입력하면 경고문과 함께 잠시 기다리면 그동안의 commit을 바꾸는 작업이 진행된다.
마지막으로 Ref 'refs/heads/master' was rewritten
이 나온다면 작업이 완료!
4-3. force push 하기
$ git push --force
명령어를 이용해서 강제 push를 해줍니다.

휑했던 잔디밭에 귀여운 잔디가 심겼습니다!
⚠️ 100MB 가 넘는 파일이 있으면 이 방법으로 미러링이 작동하지 않는다!
그런 경우에는 다음 포스팅을 참고하면 된다.
참고문서



Uploaded by N2T