본문 바로가기

프로그래밍/Ops

[Git] How to push another repository? (feat: expected committer email.. but..)

회사 프로젝트 개발을 bitbucket에서 형상관리하면서 타사의 bitbucket으로 소스를 push해야 하는 상황이 생겼다. 




1. 계정이 있는 유저로 스위칭을 우선 한다. 


일단 확인

$ git config --global user.name

$ git config --global user.email


$ git config --global user.name "hong"

$ git config --global user.email "hong@some.com"




2. remote set-url 을 통해서 원격 remote를 변경해 줄 수 있다.  


일단 현재 repository 확인

$ git remote -v


$ git remote set-url origin https://bitbucket.some.com/scm/haha/prd_baba.git



3. 이제 push 해주면 된다. 


$ git push -u origin --all






아래와 같은 이슈가 발생했다. 


expected committer email 'hong@some.com' but found 'another.user@thing.com'

... pre-receive hook declined



이것저것 찾아봤지만 타사의 bitbucket에 admin 권한이 없다보니 원인을 제대로 파악하기 어려웠다.

이래나저래나 commit history와 권한 문제인 것으로 보여 우선적으로 history 를 제거한 pure한 소스를 넣어보기로 했다. 




4. history가 없는 pure한 branch를 우선 생성 한다. --orphan 옵션을 사용하면 된다. (orphan: 유아) 


git checkout --orphan My-Branch-orphan

$ git add --all

$ git commit -m "project development"

$ git push



5. 4번 방식이 아닌 author/commiter의 유저/이메일을 변경하는 방법도 있다. 이방식은 history도 그대로 살려주니 더 좋은 방법이다. 



https://git-scm.com/book/ko/v1/Git-%EB%8F%84%EA%B5%AC-%ED%9E%88%EC%8A%A4%ED%86%A0%EB%A6%AC-%EB%8B%A8%EC%9E%A5%ED%95%98%EA%B8%B0


$ git filter-branch --commit-filter '

    if [ "$GIT_AUTHOR_EMAIL" = "hhh@some.com" ] || [ "$GIT_AUTHOR_EMAIL" = "kkk@some.com" ] || [ "$GIT_AUTHOR_EMAIL" = "ttt@some.com" ] || [ "$GIT_COMMITTER_EMAIL" = "hhh@some.com" ] || [ "$GIT_COMMITTER_EMAIL" = "kkk@some.com" ] || [ "$GIT_COMMITTER_EMAIL" = "ttt@some.com" ]

    then

        GIT_AUTHOR_NAME="hong";

        GIT_AUTHOR_EMAIL="hong@some.com";

        GIT_COMMITTER_NAME="hong";

        GIT_COMMITTER_EMAIL="hong@some.com";

        git commit-tree "$@";

    else

        git commit-tree "$@";

    fi' HEAD --all


$ git push -u origin --all

'프로그래밍 > Ops' 카테고리의 다른 글

Zuul , could not acquire a semaphore..  (0) 2020.04.20
분산서버 처리를 위한 기술들  (0) 2019.09.01
APM Scouter  (0) 2019.08.31
Git, ssh keygen (Permission denied (publickey)  (0) 2019.06.25
Docker image 받기  (0) 2019.04.04