.gitconfig에서 여러 사용자를 지정할 수 있습니까?
내에서는 Github 저장소에 사용하고 싶은 ~/.gitconfig
개인 이메일 주소를 아래에 나열합니다 [user]
.
하지만 최근에 git을 업무용으로 사용하기 시작했습니다. 내 회사의 git repo를 사용하면 커밋 할 수 있지만 새 변경 집합에 대한 알림을 보내면 내 이메일 주소를 인식하지 못하기 때문에 익명에서 온 것이라고 말합니다 .gitconfig
. 적어도 그것은 내 이론입니다.
[user]
에서 여러 정의 를 지정할 수 .gitconfig
있습니까? 아니면 .gitconfig
특정 디렉토리 의 기본값을 재정의하는 다른 방법이 있습니까? 제 경우에는 모든 작업 코드를 체크 아웃합니다. 해당 디렉토리 (및 하위 디렉토리)에 대해서만 ~/worksrc/
을 지정하는 방법이 .gitconfig
있습니까?
전역 구성을 재정의하는 특정 사용자 / 이메일 주소를 사용하도록 개별 저장소를 구성 할 수 있습니다. 저장소의 루트에서 다음을 실행하십시오.
git config user.name "Your Name Here"
git config user.email your@email.com
기본 사용자 / 이메일은 ~ / .gitconfig에 구성되어 있습니다.
git config --global user.name "Your Name Here"
git config --global user.email your@email.com
git 2.13 이후 새로 도입 된 Conditional includes를 사용하여이 문제를 해결할 수 있습니다 .
예 :
글로벌 구성 ~ / .gitconfig
[user]
name = John Doe
email = john@doe.tld
[includeIf "gitdir:~/work/"]
path = ~/work/.gitconfig
작업 특정 구성 ~ / work / .gitconfig
[user]
email = john.doe@company.tld
또는 로컬 .git/config
파일에 다음 정보를 추가 할 수 있습니다.
[user]
name = Your Name
email = your.email@gmail.com
하나의 명령 github 계정 전환
이 솔루션은 단일 git 별칭의 형태를 취합니다. 실행되면 현재 프로젝트 사용자가 다른 계정에 연결됩니다.
SSH 키 생성
ssh-keygen -t rsa -C "rinquin.arnaud@gmail.com" -f '/Users/arnaudrinquin/.ssh/id_rsa'
[...]
ssh-keygen -t rsa -C "arnaud.rinquin@wopata.com" -f '/Users/arnaudrinquin/.ssh/id_rsa_pro'
GitHub / Bitbucket 계정에 연결
- 기본 공개 키 복사
pbcopy < ~/.ssh/id_rsa.pub
- GitHub 계정에 로그인
add SSH key
github 페이지에 키 붙여 넣기- 다른 공개 키 복사
pbcopy < ~/.ssh/id_rsa_pro.pub
- 다른 모든 계정에 대해 2 ~ 4 단계를 반복하고 조정합니다.
1 단계. 자동 ssh 키 전환.
에 ssh
따라 특정 암호화 키를 사용 하도록 구성 할 수 있습니다 host
. 좋은 점은 동일한에 대해 여러 별칭을 가질 수 있다는 것입니다 hostname
.
다음 예제 ~/.ssh/config
파일을 참조하십시오 .
# Default GitHub
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
# Professional github alias
Host github_pro
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_pro
자식 원격 구성
이제 변경하여 자식 리모컨에서 이러한 별칭을 사용할 수 있습니다 git@github.com
로 git@github_pro
.
기존 프로젝트 원격을 변경하거나 (같은 것을 사용하여 git remote set-url origin git@github_pro:foo/bar.git
) 복제 할 때 직접 조정할 수 있습니다.
git clone git@github.com:ArnaudRinquin/atom-zentabs.git
별칭을 사용하면 다음과 같이됩니다.
git clone git@github_pro:ArnaudRinquin/atom-zentabs.git
2 단계. git user.email 변경
Git 구성 설정은 전역 또는 프로젝트별로 가능합니다. 우리의 경우 프로젝트 별 설정이 필요합니다. 변경하는 것은 매우 쉽습니다.
git config user.email 'arnaud.rinquin@wopata.com'
쉽지만 우리 개발자에게는 오랜 시간이 걸립니다. 이를 위해 매우 간단한 git 별칭을 작성할 수 있습니다.
~/.gitconfig
파일 에 추가하겠습니다 .
[user]
name = Arnaud Rinquin
email = rinquin.arnaud@gmail.com
...
[alias]
setpromail = "config user.email 'arnaud.rinquin@wopata.com'"
그런 다음 git setpromail
이 프로젝트에 대해서만 이메일을 변경하면됩니다.
3 단계. 명령 스위치 하나만주세요?!
매개 변수가없는 단일 명령으로 기본 계정에서 지정된 계정으로 전환하는 것이 좋지 않습니까? 이것은 확실히 가능합니다. 이 명령은 두 단계로 구성됩니다.
- 현재 프로젝트 리모컨을 선택한 별칭으로 변경
- 현재 프로젝트 user.email 구성 변경
우리는 이미 두 번째 단계에 대한 하나의 명령 솔루션을 가지고 있지만 첫 번째는 훨씬 더 어렵습니다. 하나의 명령 원격 호스트 변경
여기에 추가 할 다른 git alias 명령의 형태로 솔루션이 제공됩니다 ~/.gitconfig
.
[alias]
changeremotehost = !sh -c \"git remote -v | grep '$1.*fetch' | sed s/..fetch.// | sed s/$1/$2/ | xargs git remote set-url\"
이를 통해 한 호스트에서 다른 호스트 (별명)로 모든 원격을 변경할 수 있습니다. 예를 참조하십시오.
$ > git remote -v
origin git@github.com:ArnaudRinquin/arnaudrinquin.github.io.git (fetch)
origin git@github.com:ArnaudRinquin/arnaudrinquin.github.io.git (push)
$ > git changeremotehost github.com github_pro
$ > git remote -v
origin git@github_pro:ArnaudRinquin/arnaudrinquin.github.io.git (fetch)
origin git@github_pro:ArnaudRinquin/arnaudrinquin.github.io.git (push)
모두 결합
이제 두 명령을 하나로 결합하면됩니다. 이것은 매우 쉽습니다. 또한 bitbucket 호스트 스위칭을 통합하는 방법을 참조하십시오.
[alias]
changeremotehost = !sh -c \"git remote -v | grep '$1.*fetch' | sed s/..fetch.// | sed s/$1/$2/ | xargs git remote set-url\"
setpromail = "config user.email 'arnaud.rinquin@wopata.com'"
gopro = !sh -c \"git changeremotehost github.com github_pro && git changeremotehost bitbucket.com bitbucket_pro && git setpromail\"
Orr Sella의 블로그 게시물 에서 영감을 얻은 후 ~/.git/templates/hooks
로컬 저장소 내부의 정보를 기반으로 특정 사용자 이름과 이메일 주소를 설정 하는 사전 커밋 후크 (에 있음 )를 작성했습니다 ./.git/config
.
템플릿 디렉토리의 경로를 다음 위치에 배치해야합니다 ~/.gitconfig
.
[init]
templatedir = ~/.git/templates
그런 다음 각각 git init
또는 git clone
그 후크를 선택하고 다음 동안 사용자 데이터를 적용합니다 git commit
. 이미 존재하는 리포지토리에 후크를 적용 git init
하려면 다시 초기화하기 위해 리포지토리 내부를 실행 하십시오.
여기에 내가 생각해 낸 후크가 있습니다 (아직도 약간의 연마가 필요합니다-제안을 환영합니다). 다음 중 하나로 저장하십시오.
~/.git/templates/hooks/pre_commit
또는
~/.git/templates/hooks/post-checkout
실행 가능한지 확인하십시오. chmod +x ./post-checkout || chmod +x ./pre_commit
#!/usr/bin/env bash
# -------- USER CONFIG
# Patterns to match a repo's "remote.origin.url" - beginning portion of the hostname
git_remotes[0]="Github"
git_remotes[1]="Gitlab"
# Adjust names and e-mail addresses
local_id_0[0]="my_name_0"
local_id_0[1]="my_email_0"
local_id_1[0]="my_name_1"
local_id_1[1]="my_email_1"
local_fallback_id[0]="${local_id_0[0]}"
local_fallback_id[1]="${local_id_0[1]}"
# -------- FUNCTIONS
setIdentity()
{
local current_id local_id
current_id[0]="$(git config --get --local user.name)"
current_id[1]="$(git config --get --local user.email)"
local_id=("$@")
if [[ "${current_id[0]}" == "${local_id[0]}" &&
"${current_id[1]}" == "${local_id[1]}" ]]; then
printf " Local identity is:\n"
printf "» User: %s\n» Mail: %s\n\n" "${current_id[@]}"
else
printf "» User: %s\n» Mail: %s\n\n" "${local_id[@]}"
git config --local user.name "${local_id[0]}"
git config --local user.email "${local_id[1]}"
fi
return 0
}
# -------- IMPLEMENTATION
current_remote_url="$(git config --get --local remote.origin.url)"
if [[ "$current_remote_url" ]]; then
for service in "${git_remotes[@]}"; do
# Disable case sensitivity for regex matching
shopt -s nocasematch
if [[ "$current_remote_url" =~ $service ]]; then
case "$service" in
"${git_remotes[0]}" )
printf "\n»» An Intermission\n» %s repository found." "${git_remotes[0]}"
setIdentity "${local_id_0[@]}"
exit 0
;;
"${git_remotes[1]}" )
printf "\n»» An Intermission\n» %s repository found." "${git_remotes[1]}"
setIdentity "${local_id_1[@]}"
exit 0
;;
* )
printf "\n» pre-commit hook: unknown error\n» Quitting.\n"
exit 1
;;
esac
fi
done
else
printf "\n»» An Intermission\n» No remote repository set. Using local fallback identity:\n"
printf "» User: %s\n» Mail: %s\n\n" "${local_fallback_id[@]}"
# Get the user's attention for a second
sleep 1
git config --local user.name "${local_fallback_id[0]}"
git config --local user.email "${local_fallback_id[1]}"
fi
exit 0
편집하다:
그래서 파이썬에서 후크와 명령으로 후크를 다시 작성했습니다. 또한 스크립트를 Git 명령 ( git passport
) 으로 호출 할 수도 있습니다. 또한 ~/.gitpassport
프롬프트에서 선택할 수있는 구성 파일 ( ) 내에서 임의의 수의 ID를 정의 할 수 있습니다. 프로젝트는 github.com에서 찾을 수 있습니다. git-passport-여러 Git 계정 / 사용자 ID를 관리하기 위해 Python으로 작성된 Git 명령 및 후크 .
기본 이메일 주소 ( github 사용자에 대한 이메일 주소 링크 )를 원하지 않는 경우 요청을 받도록 구성 할 수 있습니다. 이를 수행하는 방법은 사용하는 git 버전에 따라 다릅니다. 아래를 참조하십시오.
(의도 된) 단점은 모든 저장소에 대해 이메일 주소 (및 이름)를 한 번씩 구성해야한다는 것입니다. 그래서 당신은 그것을 잊을 수 없습니다.
버전 <2.7.0
[user]
name = Your name
email = "(none)"
Orr Sella의 블로그 게시물~/.gitconfig
에서 Dan Aloni의 의견에 명시된대로 글로벌 구성 에서 . 저장소에서 첫 번째 커밋을 시도 할 때 git은 nice 메시지와 함께 실패합니다.
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got '(none)')
이름은 이메일 주소가 로컬로 설정 될 때 전역 구성에서 가져옵니다 (메시지가 완벽하게 정확하지 않음).
2.7.0 ≤ 버전 <2.8.0
2.7.0 미만 버전의 동작은 의도되지 않았으며 2.7.0으로 수정되었습니다. Orr Sella의 블로그 게시물에 설명 된대로 사전 커밋 후크를 계속 사용할 수 있습니다 . 이 솔루션은 다른 버전에서도 작동하지만이 버전에서는 작동하지 않습니다.
버전 ≥ 2.8.0
Dan Aloni 는 이러한 동작을 달성하기위한 옵션을 추가 했습니다 ( 릴리즈 노트 참조 ). 함께 사용 :
[user]
useConfigOnly = true
작동하도록 글로벌 구성에서 이름이나 이메일 주소를 제공하지 않을 수 있습니다. 그런 다음 첫 번째 커밋에서 오류 메시지가 표시됩니다.
fatal: user.useConfigOnly set but no name given
따라서 메시지는 그다지 유익하지 않지만 옵션을 명시 적으로 설정 했으므로 수행 할 작업을 알아야합니다. 2.7.0 미만 버전의 솔루션과 달리 항상 이름과 이메일을 모두 수동으로 설정해야합니다.
Git 2.13의 조건부 포함 을 사용하면 이제 거의 작업없이 여러 사용자 / 이메일을 하나의 컴퓨터에 공존 할 수 있습니다.
user.gitconfig
내 개인 이름과 이메일이 있습니다. work-user.gitconfig
내 직장 이름과 이메일이 있습니다. 두 파일 모두 ~
경로에 있습니다.
따라서 내 개인 이름 / 이메일이 기본적으로 적용됩니다. 들어 c:/work/
DIR, 내 작품 이름 / 이메일이 적용됩니다. 들어 c:/work/github/
DIR, 내 개인 이름 / 이메일이 적용됩니다. 이것은 마지막 설정이 적용될 때 작동합니다.
# ~/.gitconfig
[include]
path = user.gitconfig
[includeIf "gitdir/i:c:/work/"]
path = work-user.gitconfig
[includeIf "gitdir/i:c:/work/github/"]
path = user.gitconfig
gitdir
대소 문자를 구분하고 gitdir/i
대소 문자를 구분하지 않습니다.
"gitdir/i:github/"
github
경로 에있는 모든 디렉토리에 대해 조건부 포함을 적용합니다 .
git
여러 이름 / 이메일을 git
사용하는 또 다른 옵션 은 별칭 을 지정하고 -c
플래그를 사용 하여 전역 및 저장소 별 구성을 재정의하는 것입니다.
예를 들어 별칭을 정의하면 다음과 같습니다.
alias git='/usr/bin/git -c user.name="Your name" -c user.email="name@example.com"'
작동하는지 확인하려면 다음을 입력하십시오 git config user.email
.
$ git config user.email
name@example.com
별칭 대신 사용자 지정 git
실행 파일을 $PATH
.
#!/bin/sh
/usr/bin/git -c user.name="Your name" -c user.email="name@example.com" "$@"
특정 저장소에 비해 이러한 방법의 장점은 사용자 정의 프로그램이 활성화 될 때 .git/config
모든 git
저장소에 적용된다는 것 git
입니다. 이러한 방식으로 (공유) 구성을 수정하지 않고도 사용자 / 이름간에 쉽게 전환 할 수 있습니다.
git aliases (및 git configs의 섹션)를 구출하십시오!
별칭 추가 (명령 줄에서) :
git config --global alias.identity '! git config user.name "$(git config user.$1.name)"; git config user.email "$(git config user.$1.email)"; :'
그런 다음 예를 들어
git config --global user.github.name "your github username"
git config --global user.github.email your@github.email
새 저장소 또는 복제 된 저장소에서 다음 명령을 실행할 수 있습니다.
git identity github
이 솔루션은 자동이 아니지만 전역에서 사용자 및 이메일을 ~/.gitconfig
설정 해제 하고로 설정 user.useConfigOnly
하면 true
git이 각각의 새 저장소 또는 복제 된 저장소에서 수동으로 설정하도록 상기시킵니다.
git config --global --unset user.name
git config --global --unset user.email
git config --global user.useConfigOnly true
실수를 피하기 위해 잘 작동하는 것처럼 보이는 간단한 해결책이 있습니다.
에서 [user]
섹션을 제거하기 만하면 각 저장소에 대한 ~/.gitconfig
설정없이 커밋을 만들 수 없습니다 user.name
.
당신의에서 ~/.bashrc
, 사용자 및 이메일에 대한 몇 가지 간단한 별칭을 추가 :
alias ggmail='git config user.name "My Name";git config user.email me@gmail.com'
alias gwork='git config user.name "My Name";git config user.email me@work.job'
이 답변은 부분적으로 @Saucier에 의해 게시물에 의해 영감을,하지만 난 세트에 자동화 된 방법을 찾고 있었다 user.name
그리고 user.email
그가 개발하는 자식 여권 패키지보다 조금 더 가벼운 무게했다 원격 기반으로하는 REPO 단위에 . 또한 useConfigOnly 설정을 위해 @John에게 h / t합니다. 내 해결책은 다음과 같습니다.
.gitconfig
변경 사항 :
[github]
name = <github username>
email = <github email>
[gitlab]
name = <gitlab username>
email = <gitlab email>
[init]
templatedir = ~/.git-templates
[user]
useConfigOnly = true
다음 경로에 저장해야하는 체크 아웃 후 후크 : ~/.git-templates/hooks/post-checkout
:
#!/usr/bin/env bash
# make regex matching below case insensitive
shopt -s nocasematch
# values in the services array should have a corresponding section in
# .gitconfig where the 'name' and 'email' for that service are specified
remote_url="$( git config --get --local remote.origin.url )"
services=(
'github'
'gitlab'
)
set_local_user_config() {
local service="${1}"
local config="${2}"
local service_config="$( git config --get ${service}.${config} )"
local local_config="$( git config --get --local user.${config} )"
if [[ "${local_config}" != "${service_config}" ]]; then
git config --local "user.${config}" "${service_config}"
echo "repo 'user.${config}' has been set to '${service_config}'"
fi
}
# if remote_url doesn't contain the any of the values in the services
# array the user name and email will remain unset and the
# user.useConfigOnly = true setting in .gitconfig will prompt for those
# credentials and prevent commits until they are defined
for s in "${services[@]}"; do
if [[ "${remote_url}" =~ "${s}" ]]; then
set_local_user_config "${s}" 'name'
set_local_user_config "${s}" 'email'
break
fi
done
github와 gitlab에 대해 다른 자격 증명을 사용하지만 위 코드의 참조는 사용하는 모든 서비스로 대체되거나 보강 될 수 있습니다. 체크 아웃 후 후크가 자동으로 사용자 이름과 저장소에 대한 이메일을 로컬로 설정하도록하려면 서비스 이름이 원격 URL에 나타나는지 확인하고 post-checkout
스크립트 의 서비스 배열에 추가하고 해당 섹션을 만듭니다. 당신 .gitconfig
이 해당 서비스에 대한 사용자 이름과 이메일이 포함되어 있습니다.
원격 URL에 서비스 이름이 표시되지 않거나 저장소에 원격이 없으면 사용자 이름과 이메일이 로컬로 설정되지 않습니다. 이 경우 user.useConfigOnly
사용자 이름과 이메일이 리포지토리 수준에서 설정 될 때까지 커밋을 수행 할 수없는 설정이 적용되며 사용자에게 해당 정보를 구성하라는 메시지가 표시됩니다.
GIT_AUTHOR_EMAIL
+ 지역 .bashrc
.bashrc_local
:이 파일을 추적하지 말고 업무용 컴퓨터에만 저장하십시오.
export GIT_AUTHOR_EMAIL='me@work.com'
export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"
.bashrc
:이 파일을 추적하여 직장 및 가정용 컴퓨터에서 동일하게 만듭니다.
F="$HOME/.bashrc_local"
if [ -r "$F" ]; then
. "$F"
fi
https://github.com/technicalpickles/homesick 을 사용하여 내 dotfile을 동기화하고 있습니다.
gitconfig 만 환경 변수를 허용하는 경우 : git config에서 쉘 변수 확장
Windows 환경
Git Extensions --> Settings --> Global Settings
시스템에 설치되어있는 경우 에서 추가로 수정할 수 있습니다 .
이러한 설정에 액세스하려면 Windows 환경에서 폴더 / 디렉토리를 마우스 오른쪽 버튼으로 클릭하십시오.
업데이트 : 버전 2.49에서 여러 설정을 전환 / 유지하는 방법
여기에 많은 답변의 단계를 따른 후 방금 찾은 내용이 있습니다.
다른 github 계정에 대해 여러 SSH 키 설정을 구성하는 방법
현재 저장된 키 확인을 시작할 수 있습니다.
$ ssh-add -l
이전에 캐시 된 모든 키를 삭제하기로 결정한 경우 ( 선택 사항, 이에 대해주의 )
$ ssh-add -D
그런 다음 사용하려는 / 필요한 각 이메일 / 계정에 연결된 SSH 게시 / 개인 키를 만들 수 있습니다.
$ cd ~/.ssh
$ ssh-keygen -t rsa -C "work@company.com" <-- save it as "id_rsa_work"
$ ssh-keygen -t rsa -C "pers@email.com" <-- save it as "id_rsa_pers"
이 명령을 수행하면 다음 파일이 생성됩니다.
~/.ssh/id_rsa_work
~/.ssh/id_rsa_work.pub
~/.ssh/id_rsa_pers
~/.ssh/id_rsa_pers.pub
인증 에이전트 가 실행 중인지 확인
$ eval `ssh-agent -s`
다음과 같이 생성 된 키를 추가합니다 (~ / .ssh 폴더에서).
$ ssh-add id_rsa_work
$ ssh-add id_rsa_pers
이제 저장된 키를 다시 확인할 수 있습니다.
$ ssh-add -l
이제 생성 된 공개 키를 github / bickbuket 서버 액세스 키에 추가 해야 합니다.
각 저장소를 다른 폴더에 복제
사용자가 작업 할 폴더로 이동하여 실행하십시오.
$ git config user.name "Working Hard"
$ git config user.email "work@company.com"
이것이 무엇을하는지보기 위해서 ".git / config"의 내용을 확인하십시오.
사용자의 위치를 폴더로 이동 인원이 작업이 실행됩니다
$ git config user.name "Personal Account"
$ git config user.email "pers@email.com"
이것이 무엇을하는지보기 위해서 ".git / config"의 내용을 확인하십시오.
이 모든 작업이 끝나면 두 폴더 사이를 전환하여 개인 코드와 업무 코드를 커밋 할 수 있습니다.
간단한 해킹 일 수도 있지만 유용합니다. 아래와 같이 2 개의 ssh 키를 생성하십시오.
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/GowthamSai/.ssh/id_rsa): work
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in damsn.
Your public key has been saved in damsn.pub.
The key fingerprint is:
SHA256:CrsKDJWVVek5GTCqmq8/8RnwvAo1G6UOmQFbzddcoAY GowthamSai@Gowtham-MacBook-Air.local
The key's randomart image is:
+---[RSA 4096]----+
|. .oEo+=o+. |
|.o o+o.o= |
|o o o.o. + |
| =.+ . = |
|= *+. S. |
|o*.++o . |
|=.oo.+. |
| +. +. |
|.o=+. |
+----[SHA256]-----+
같은 방법으로 개인용으로 하나 더 만듭니다. 따라서 두 개의 ssh 키, 직장 및 회사가 있습니다. work.pub, work, personal.pub, personal을 ~ / .ssh / 디렉토리에 복사 합니다.
그런 다음 다음 줄로 셸 스크립트를 만들고 다음 내용을 사용하여 이름을 crev.sh (Company Reverse)로 지정합니다.
cp ~/.ssh/work ~/.ssh/id_rsa
cp ~/.ssh/work.pub ~/.ssh/id_rsa.pub
같은 방법으로 다음 내용으로 prev.sh (Personal Reverse)라는 이름을 더 만듭니다.
cp ~/.ssh/personal ~/.ssh/id_rsa
cp ~/.ssh/personal.pub ~/.ssh/id_rsa.pub
~ / .bashrc에서 아래와 같은 스크립트에 별칭을 추가합니다.
alias crev="sh ~/.ssh/crev.sh"
alias prev="sh ~/.ssh/prev.sh"
source ~/.bashrc
회사를 이용하고 싶을 때마다 crev를하고, personal을 이용하고 싶다면 prev :-p.
해당 ssh 키를 GitHub 계정에 추가하십시오. 이전에 생성 된 id_rsa가 없는지 확인하십시오. 해당 스크립트는 id_rsa를 덮어 쓰기 때문입니다. 이미 id_rsa를 생성 한 경우 계정 중 하나에 사용하십시오. 개인용으로 복사하고 개인 키 생성을 건너 뜁니다.
나는 그것을 처리하는 bash 함수를 만들었습니다. 다음은 Github 저장소 입니다.
기록을 위해 :
# Look for closest .gitconfig file in parent directories
# This file will be used as main .gitconfig file.
function __recursive_gitconfig_git {
gitconfig_file=$(__recursive_gitconfig_closest)
if [ "$gitconfig_file" != '' ]; then
home="$(dirname $gitconfig_file)/"
HOME=$home /usr/bin/git "$@"
else
/usr/bin/git "$@"
fi
}
# Look for closest .gitconfig file in parents directories
function __recursive_gitconfig_closest {
slashes=${PWD//[^\/]/}
directory="$PWD"
for (( n=${#slashes}; n>0; --n ))
do
test -e "$directory/.gitconfig" && echo "$directory/.gitconfig" && return
directory="$directory/.."
done
}
alias git='__recursive_gitconfig_git'
~ / .bash_profile에 추가하면 github.com의 기본 키간에 전환 할 수 있습니다.
# Git SSH keys swap
alias work_git="ssh-add -D && ssh-add -K ~/.ssh/id_rsa_work"
alias personal_git="ssh-add -D && ssh-add -K ~/.ssh/id_rsa"
git commit --author "Your Name <your@email.com>"
다른 사용자로 커밋하려는 저장소에서 커밋을 수행하는 순간 에도 사용할 수 있습니다 .
Something like Rob W's answer, but allowing different a different ssh key, and works with older git versions (which don't have e.g. a core.sshCommand config).
I created the file ~/bin/git_poweruser
, with executable permission, and in the PATH:
#!/bin/bash
TMPDIR=$(mktemp -d)
trap 'rm -rf "$TMPDIR"' EXIT
cat > $TMPDIR/ssh << 'EOF'
#!/bin/bash
ssh -i $HOME/.ssh/poweruserprivatekey $@
EOF
chmod +x $TMPDIR/ssh
export GIT_SSH=$TMPDIR/ssh
git -c user.name="Power User name" -c user.email="power@user.email" $@
Whenever I want to commit or push something as "Power User", I use git_poweruser
instead of git
. It should work on any directory, and does not require changes in .gitconfig
or .ssh/config
, at least not in mine.
Although most questions sort of answered the OP, I just had to go through this myself and without even googling I was able to find the quickest and simplest solution. Here's simple steps:
- copy existing
.gitconfg
from your other repo - paste into your newly added repo
.gitconfig
이름, 이메일 및 사용자 이름과 같은 파일의 값 변경[user] name = John email = john@email.net username = john133
.gitignore
목록 에 파일 이름을 추가.gitconfig
하여 작업 저장소에 파일을 커밋하지 않도록 합니다.
참고 URL : https://stackoverflow.com/questions/4220416/can-i-specify-multiple-users-for-myself-in-gitconfig
'Development Tip' 카테고리의 다른 글
Vim에서 어떻게 다시 실행 (즉, "실행 취소")합니까? (0) | 2020.09.30 |
---|---|
Git의 단계 화되지 않은 변경 사항에서 "old mode 100755 new mode 100644"라는 파일을 제거하려면 어떻게해야합니까? (0) | 2020.09.30 |
차이점 (0) | 2020.09.30 |
숫자 배열의 합을 찾는 방법 (0) | 2020.09.30 |
Maven의 dependencyManagement와 종속성의 차이점 (0) | 2020.09.30 |