Ubuntu 18.04에서 2개의 github 계정을 사용하려고 합니다. PAT(Personal Access Token)도 사용합니다. 내가 달성하고 싶은 설정을 따릅니다.
- 2개의 github 계정이 있어야 합니다 - 기본 계정이고 동일한 컴퓨터에서 작업합니다.
- 이 디렉터리 내에 생성된 모든 저장소는
~/work/
작업 이름과 이메일을 사용하여 자동으로 제출해야 하며, 이 디렉터리 외부의 모든 저장소는 마스터 이름과 이메일을 사용하여 제출해야 합니다. - 로컬에서 github로 데이터를 푸시하려면 libresecret을 사용하여 두 계정(기본 및 작업)에 대한 개인 액세스 토큰을 기억하세요.
- SSH 대신 개인 액세스 토큰을 사용하십시오.
- 저장소별로가 아닌 계정별로 자격 증명을 저장합니다(예
useHttpPath
: .
이것이 제가하는 것입니다.
1단계: Github 마스터 계정 추가
$ git config --global user.name "Johnny"
$ git config --global user.email [email protected]
$ sudo apt install libsecret-1-0 libsecret-1-dev
$ cd /usr/share/doc/git/contrib/credential/libsecret/
$ sudo make
$ git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
위의 방법을 사용하면 사용자 이름과 비밀번호를 반복해서 입력하지 않고도 기본 github 계정에 코드를 푸시할 수 있습니다. 한 번만 입력하면 libsecret이 대신합니다.
~/.gitconfig
이 시점까지.
[user]
name = Johnny
email = [email protected]
[credential]
helper = /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
2단계: 직장 계정 추가
~/work/
디렉터리 내의 모든 저장소를 두 번째 github 계정과 연결하고 싶습니다 . 나는 다음과 같이 변경합니다 -
글로벌 구성~/.gitconfig
[user]
name = Johnny
email = [email protected]
[credential]
helper = /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
[includeIf "gitdir:~/work/"]
path = ~/work/.gitconfig
작업별 구성~/work/.gitconfig
[user]
name = John Doe
email = [email protected]
이제 작업 코드를 푸시하려고 하면 다음 오류가 발생합니다.
remote: Permission to work_username/mywork.git denied to main_username.
fatal: unable to access 'https://github.com/work_username/mywork.git/': The requested URL returned error: 403
동일한 호스트에서 실행되는 여러 저장소에 대한 자격 증명 관리를 분할하여 이 문제를 해결했습니다.
$ git config --global credential.github.com.useHttpPath true
최종 ~/.gitconfig
:
[user]
name = Johnny
email = [email protected]
[credential]
helper = /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
[includeIf "gitdir:~/work/"]
path = ~/work/.gitconfig
[credential "github.com"]
useHttpPath = true
질문
문제는 내가 만드는 모든 새 저장소에 대해 사용자 이름과 비밀번호를 설정해야 한다는 것입니다. 글에는 매번 비밀번호를 입력하지 않고도 사용할 수 있다고 적혀 있습니다.
저장소가 있는 디렉터리에 따라 인증에 다른 비밀번호를 사용하는지 어떻게 libsecret
알 수 있나요? git
이것은 이미 사용된 커밋 이름/이메일에서 발생하고 있습니다 IncludeIf
. 또한 이것을 어떻게든 비밀번호 인증으로 확장하고 싶습니다.