회사 프로젝트 개발을 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도 그대로 살려주니 더 좋은 방법이다.
$ 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 |