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