Git 저장소의 각 URL에 대한 커밋 시 Github 계정 자동 전환
user.email
과 user.name
사이를 전환합니다.제 직장에서는 회사 내에 코드를 구축한 GitHub Enterprise 환경push를 사용하고 있습니다. 여기는 회사에서 사용하는 메일 주소로 등록되어 있습니다.
다른 한편, 개인 개발이 있다면 GitHub를 사용하세요. 이것은 개인용 Gmail 주소입니다.
그러면 git config에서 전역적으로 개인용 이메일을 설정하면 GitHub Enterprise의 자료 라이브러리에서commit을 조심하지 않을 수 있습니다.
모든 자료고는
git config --local user.email [email protected]
로 설정할 수 있지만 대부분 잊어버리면 리베이스제가 된다...이런 상황은 매우 번거롭기 때문에, 마음대로 고쳐 써 보려고 한다
그렇습니다.
github에서 메모리 라이브러리commit 적당히 풀기
$ git config --get user.email # 元は会社アカウント(ここでの表示はダミーデータ)
[email protected]
$ git config --get user.name
global_dummy
$ git commit --allow-empty -m dummy-commit # commitしようとするとrejectされ、設定が上書きされる
changed user.name to ry023
changed user.email to [email protected]
try again!
$ git config --get user.name # 設定が変わっていることを確認
ry023
$ git config --get user.email
[email protected]
$ git commit --allow-empty -m dummy-commit # もう一度やると、正しいアカウントでcommitされる
[master cd57d5b] dummy-commit
$ git show HEAD
commit cd57d5bd3bf8eb461d4532e9133a232a92aeab0b
Author: ry023 <[email protected]>
Date: Sat Apr 14 16:29:35 2018 +0900
dummy-commit
설정했어
git의 v2.9에서pre-commit의config에서hook의path를 변경할 수 있습니다.
다음 방식
core.hooksPath
을 통해 모든 저장소의 공공hook 방치장소가 됩니다$ mkdir -p ~/.git/hooks
$ git config --global core.hooksPath ~/.git/hooks/
~/.git/hooks
이 파일을 아래와 같은 느낌의 셸 스크립트로 설정하면 끝!머리 부분은 좋은 걸로 바꿔주세요.
(실행 권한이 필요하기 때문에
~/.git/hooks/pre-commit
잊지 마세요)
#!/bin/sh
#### アカウント設定。ここに書くか、bash_profileやらzsh_profileやらに書いておく ####
GITHUB_DOMAIN="github.com"
GITHUB_NAME="ry023"
GITHUB_EMAIL="[email protected]"
GHE_DOMAIN="your-company-github.com"
GHE_NAME="ry023"
GHE_EMAIL="[email protected]"
###################################################################
raw_url="$(git remote get-url origin)"
if echo "$raw_url" | grep https; then
# for https
remote_domain=$(echo $raw_url | sed -e 's/https:\/\///' | awk -F'/' '{print $1}')
else
# for ssh
remote_domain=$(echo $raw_url | sed -e 's/^.*@\(.*\)/\1/' | awk -F'/' '{print $1}' | awk -F':' '{print $1}')
fi
case "$remote_domain" in
"$GITHUB_DOMAIN" )
NAME=$GITHUB_NAME
EMAIL=$GITHUB_EMAIL
;;
"$GHE_DOMAIN" )
NAME=$GHE_NAME
EMAIL=$GHE_EMAIL
;;
* )
echo "unknown remote domain $remote_domain"
exit 0
;;
esac
FAIL=false
if [ "$(git config --local --get user.name)" != $NAME ]; then
git config --local user.name $NAME
echo "changed user.name to $NAME"
FAIL=true
fi
if [ "$(git config --local --get user.email)" != $EMAIL ]; then
git config --local user.email $EMAIL
echo "changed user.email to $EMAIL"
FAIL=true
fi
if $FAIL;then
echo "try again!"
exit 1
fi
문장제외: 원래는 계좌의 변경에서commit까지pre-commit에서 통일을 완성하려고 했지만 아무래도 pre-commit에서 계좌를 바꾸더라도 제출 자체는 이전의 계좌를 유지할 것이다.더 좋은 방법이 있나요?
Reference
이 문제에 관하여(Git 저장소의 각 URL에 대한 커밋 시 Github 계정 자동 전환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ry023/items/a8f08f73301214fb85d9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)