다른 사용자 이름으로 GitHub에 어떻게 푸시합니까?


156

친구와 내 컴퓨터를 공유하고 있습니다. Windows 7에서 git bash 쉘을 사용하여 GitHub에 푸시했습니다. 이제 우리는 해당 컴퓨터의 다른 프로젝트에 있으며 그녀의 계정으로 푸시해야합니다. 그러나 계속 내 사용자 이름을 사용하려고 시도하고 그녀의 저장소에 액세스 할 수 없다고 말합니다.

$ git push her_github_repository our_branch
ERROR: Permission to her_username/repository.git denied to my_username.
fatal: The remote end hung up unexpectedly

이 도움말합니까 help.github.com/articles/setting-your-email-in-git (사용을 git config --global user.name her_username밀어 전에)
Prinzhorn

HTTPS URL로 전환 했으므로 github은 항상 자격 증명을 요구합니다. 커밋은 실제로 푸시를 수행하는 사람에 관계없이 git config user.name 및 git config user.email의 사용자가 수행 한대로 기록됩니다. 추신 : 나는 누가 무엇을 밀었던 역사가 없다고 생각합니다.
Jorge Orpinel

29
git config --local credential.helper ""트릭을 할 수 있습니다.
SOFe

내 Windows 시스템에서 여기에 제공된 솔루션을 따를 수 없습니다. 이 답변에 주어진 단계는 마지막 일 stackoverflow.com/a/15382950/351903
Sandeepan 나스

@SOFe 그것이 내가 찾던 것입니다! 이 명령은 캐시 된 자격 증명을 효과적으로 지웁니까?
CCJ

답변:


93

다른 Windows 사용자를 사용하는 경우 SSH 키와 git 설정은 독립적입니다.

이것이 당신을위한 옵션이 아닌 경우, 친구는 SSH 키를 그녀의 Github 계정에 추가해야합니다.

이전 솔루션을 사용하면 자신을 계속 밀고 있지만 그녀의 저장소로 밀어 넣을 수 있습니다. 이것을 원하지 않고 같은 PC의 다른 폴더에서 작업 -g하려면 config 명령의 플래그를 제거하여 git를 사용하여 폴더 안에 로컬로 사용자 이름과 이메일을 설정할 수 있습니다 .

git config user.name her_username
git config user.email her_email

또는 https프로토콜 을 푸시 하면 암호 관리자를 사용하지 않는 한 Github에서 매번 사용자 이름 / 암호를 묻습니다.


6
내가 기억하는 한 SSH 키는 Github에서 고유해야합니다. 여러 계정에 동일한 키를 연결할 수 없습니다
Gareth

@Gareth 어쩌면 Windows에서 (그리고 내가 아는 모든 곳에서) 동일한 사용자에 대해 여러 SSH 키를 설정할 수 있습니다.
Simon Boudrias

두 개의 키를 가질 수 없습니다. 아래 답변을 참조하십시오.
chovy

1
모든 프로젝트 :git config --global user.name "Mona Lisa"
w3spi

236

이것은 나를 위해 일했습니다. 사용자 이름과 암호를 묻는 메시지가 나타납니다.

git config --local credential.helper ""
git push origin master

1
고마워, 그것은 나를 위해 비트 버켓을 사용하고 내 사용자 이름을 구성 할 것이지만, 이것은 AWS 코드 커밋으로의 마이그레이션을 해결했습니다.
Alejandro Ruiz

나는 helper = cache --timeout=999999내 것을 설정 .gitignore했고 이것이 효과가있었습니다. 그러나 로컬 구성을 변경하지 않고 재설정 할 수있는 방법이 있습니까?
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

이것은 놀랍다!
hargun3045

이것이 내가 찾던 것입니다 !!!
aagjalpankaj

1
여기에서 수행하는 작업을 더 잘 설명하십시오. credential.helperWindows 자격 증명 저장소와 같이 (전역 적으로) 구성된을 무시하도록 로컬 리포지토리를 구성합니다 . 이것은 또한 아무것도 구성되지 않았으므로 필요할 때 마다 사용자 이름 / 암호를 요구한다는 것을 의미하므로 credential.helper대신 캐시하도록 캐시를 구성하거나 (@Ciro Santilli의 답변 참조) 여기에서 다른 답변을 사용할 수도 있습니다.
rugk

52

다른 계정을 사용하여 푸시 할 수 있습니다. 예를 들어, 계정이 .gitconfig에 저장된 A 이고 푸시하려는 리포지토리의 소유자 인 계정 B 를 사용 하려는 경우.

계정 B : B_user_name, B_password
SSH 링크의 예 : https://github.com/B_user_name/project.git

B 계정 의 푸시 는 다음 과 같습니다.

$ git push https://'B_user_name':'B_password'@github.com/B_user_name/project.git

.gitconfig에서 계정을 보려면

  1. $git config --global --list
  2. $git config --global -e (계정도 변경)

와우이게 답입니다! 내가 설정 한 user.name, user.email지역 설정에, 나는 사용자 이름 및 작동하지로 복제 한; 이제 마지막 답변은 키 체인 / 무엇이든 ...에 닿지 않고 작동합니다 Git 2.9.0 in Windows. "마지막이지만 적어도".. 이것이 바로 소위 말하는 것입니다. 감사합니다. 이 답변은 더 공감할 가치가 있습니다.
WesternGun

3
유일한 부작용은 암호 / 사용자 이름이 bash 기록에 기록된다는 것입니다. 그러나 그것은 저에게 효과적입니다.
WesternGun

이것에 감사합니다. 이것이 바로 내가하고 싶은 일입니다. 그러나 이것은 마스터로 밀어 넣습니다. 마스터 이외의 지점으로가는 방법은 무엇입니까?
스티븐 앤더슨

2
@WesternGun bash 기록에 비밀번호가 기록되지 않도록하려면 URL에 비밀번호를 제공하지 마십시오. 사용하십시오 https://'B_user_name'@github.com/B_user_name/project.git. 암호를 묻는 메시지가 나타납니다 B_user_name.
subtleseeker

24

사용자 지정을 사용하여 ssh 별칭을 설정하고 IdentityFile사용자 지정 me-github호스트 이름 을 사용하도록 원본을 다시 작성했습니다 .

#when prompted enter `id_rsa_user1` as filename
ssh-keygen -t rsa

# ~/.ssh/config
Host user1-github
HostName github.com
Port 22
User git
IdentityFile ~/.ssh/id_rsa_user1

#check original remote origin url
git remote -v
origin git@github.com:user1/my-repo.git

#change it to use your custom `user1-github` hostname
git remote rm origin
git remote add origin git@user1-github:user1/my-repo.git

5
제거하고 추가하는 대신 다음과 같이 원격 URL을 변경할 수 있습니다. git remote set-url origin git@user1-github:user1/my-repo.git 😊
Ninh Pham

18

git@github.com:username/projectname.gitHTTPS URL 대신 SSH URL ( )을 사용하는 경우 $GIT_SSH_COMMAND환경 변수를 사용하여 다른 SSH 키를 임시로 지정할 수 있습니다 .

$ GIT_SSH_COMMAND="ssh -i different_private_key" git push

내가 알 수있는 한, SSH URL을 사용하여 GitHub는 사용자 이름, 키 만 신경 쓰지 않습니다. 사용자 계정이 저장소에 액세스 할 수 있고 해당 계정에 SSH 키가 있는 경우 (계정 의 SSH 키 페이지 참조) 해당 SSH 키를 사용하여 해당 리포지토리로 푸시하면 해당 푸시는 해당 사용자가 보낸 것으로 간주됩니다.


1
이것은 변화, 흥미롭게도, 나를 위해 작동하지 않았다 user.nameuser.emailgit configA는 관련이 커밋하는 계정을 변경합니다
케빈 자오

그것은 나를 위해 일했다. 대답을 더 명확하게하기 위해 작은 의견. "different_private_key"는 userA 인 hostA에서 "git push"를 수행하려는 userB의 개인 키를 포함하는 hostA의 파일입니다. hostA에이 파일을 작성하고 (예 : ~ / .ssh / id_rsa_userB) userB가 존재하는 hostB에서 ~ / .ssh / id_rsa 파일의 내용을 저장해야합니다. userB가 존재하는지 또는 hostA에 존재하지 않더라도 상관 없습니다.
Alexander Samoylov

15

git pushGit 을 실행 한 후 비밀번호를 요청 user하지만 로 비밀번호를 입력 new_user하려는 경우 git config remote.origin.url다음 을 사용할 수 있습니다 .

$ git push
user@my.host.com:either/branch/or/path's password:

이 시점에서를 사용 ^C하여 종료 git push하고 다음을 사용하여 as을 (를) 누릅니다 new_user.

$ git config remote.origin.url
user@my.host.com:either/branch/or/path

$ git config remote.origin.url new_user@my.host.com:either/branch/or/path

$ git push
new_user@my.host.com:either/branch/or/path's password:

안녕하세요, 나는이 솔루션을 시도하여 아틀라스 숨김으로 밀어 넣었습니다. "<URL> / info / refs를 찾을 수 없습니다 : 서버에서 git update-server-info를 실행 했습니까?"라는 오류가 발생합니다. Stash에서 명령을 실행할 수 있다고 생각하지 않습니다. 이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 감사!
Zsolt Szilagyi

GitHub의 경우 다음과 같습니다.git config remote.origin.url https://different_user@github.com/different_user/repo.git
NumesSanguis

13

복제하는 동안 간단합니다 .git URL을 사용자 이름으로 사용하십시오. 커밋하는 동안 새 사용자 비밀번호를 묻습니다.

예 :

자식 복제 https : //username@github.com/username/reponame.git

자식 복제 https : //username@bitbucket.org/username/reponame.git


4
이 답변은 적어도 더 많은 투표를해야합니다. @Krishna Kavoor가 말한대로하지 않으면 전역에 username1이 있고 로컬에 username2가 있지만 git은 전역 이름을 사용하려고하기 때문에 항상 문제가 있습니다.
Markon

작동하지 않습니다. 나는 그것을 사용했고 그것은 말한다 : fatal: repo not found.
WesternGun

1
항상 작동합니다 .3 명의 다른 고객으로부터 3 개의 다른 프로젝트가 있기 때문에 기적처럼 작동합니다. 리포지토리 경로가 올바른지 확인하십시오.
Krishnamoorthy Acharya

7

이것이 당신의 문제라면

remote: Permission to username1/repo.git denied to username2.
fatal: unable to access 'https://github.com/username1/repo.git/':
The requested URL returned error: 403

git config를 사용하여 터미널에서 사용자 이름과 이메일을 변경하는 것 외에도 :

$ git config --global user.name "Bob"
$ git config --global user.email "bob@example.com"

키 체인에서 인증 정보를 제거해야합니다. 이 솔루션은 알아내는 데 몇 시간이 걸렸으며 키 체인에도 인증서가 있음을 알았습니다.

키 체인 접근을 열고 모든 항목을 클릭하고 자식을 검색하십시오. 모든 키 체인 삭제


키 체인에 대응하는 Windows 7은 무엇입니까?
Thomas Eyde

확실하지 않지만 알아낼 것
Muyide Ibukun

나도 여기에 붙어있는 것 같아요. 알았어?
Sandeepan Nath

아니, 결국 알지 못했지만 그렇게 어렵지 않아야한다고 생각하고있다
Muyide Ibukun

1
키 체인에서 인증 정보를 제거하는 방법에 대한 제안을 주셔서 감사합니다
Luja 쉬 레스타를

7

하나의 컴퓨터를 사용하여 다른 사용자 이름으로 두 개의 다른 GitHub 계정으로 코드를 푸시했습니다. 하나의 계정을 이미 설정했고 새 계정을 추가하려고한다고 가정합니다.

  1. 새로운 SSH 키 생성 ssh-keygen -t rsa -C "myaddress@example.com"
  2. 저장하되 기존 항목을 무시하지 마십시오 id_rsa. 다른 이름을 지정하십시오. 예 :id_rsa_another
  3. 키의 내용을 GitHub 계정으로 복사하십시오 :

설정-> SSH 및 GPG 키-> 새 SSH 키-> 레이블 제공 및 키 붙여 넣기 -> SSH 키 추가

  1. ssh 에이전트에 키를 추가하십시오. ssh-add ~/.ssh/id_rsa_another
  2. GitHub 호스트 설정 : touch ~/.ssh/config계정으로 구성을 제공 하여 구성 파일을 생성하고 파일을 편집하십시오 :
#first account
Host github.com-first
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa

#another account
Host github.com-another
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_another

이제 ssh 에이전트에 추가 한 키, 즉 첫 번째 계정 사용에 따라 다른 계정에서 푸시 할 수 있어야합니다 ssh-add ~/.ssh/id_rsa.

사용자 이메일을 변경할 수도 있습니다.

git config --global user.email "myaddress@example.com"

또는 계정 중 하나에 코드를 넣을 때 권한 오류가 발생하면 ssh 키를 정리하십시오.

ssh-add -D


1
예, 이미 여러 계정으로 설정했습니다. 그러나 첫 번째 계정으로 어떻게 추진할 수 있습니까? 당신은 명령을 공유 할 수 있습니까?
codemicky

"어떻게 밀어 붙일 수 있습니까?"는 무슨 뜻입니까? 않습니다 git push작동하지? 키를 추가 한 후 푸시 할 수 있어야합니다
Tomasz Bartkowiak

각 리포 프로젝트마다 사용자를 설정해야합니다. $ git config user.email
jasmintmp

6

자격 증명 관리자로 이동 Windows 자격 증명으로 이동 일반 자격 증명에서 항목 삭제 다시 연결하십시오.


감사. 경로는 Control Panel\All Control Panel Items\Credential Manager-> Windows Credentials입니다.
Saheed

4

앞에서 언급했듯이 사용할 수 있습니다

git config user.name her_username
git config user.email her_email

단일 리포지토리에 대한 사용자 이름과 이메일을 수동으로 설정하려면 다음 명령을 추가해야합니다.

git commit --amend --reset-author

변경 전에 이미 푸시를 시도한 경우 그렇지 않으면 변경 사항이 구성 파일에 나타나지 않습니다.


사실이 아닙니다. --reset-author(와 함께 --...) 또한 최신의 타임 스탬프를 마지막 커밋에 대한 최신 구성 이름 / 이메일을 넣어 것입니다. 구성 파일의 변경 사항에는 영향을 미치지 않습니다.
Ramon Snir

3

다른 사용자 이름으로 새 원격 URL을 추가 할 수 있습니다. git remote add origin-username https://username@github.expedia.biz/repository_name.git

그런 다음을 사용 git push -u origin-username master하면 비밀번호를 입력하라는 메시지가 표시됩니다.


2

git config user.name은 내가 저지른 이름 만 변경합니다. 여전히 밀 수 없습니다. 이것이 내가 해결 한 방법이며, 나는 쉬운 방법이라고 생각합니다.

  1. https://help.github.com/articles/connecting-to-github-with-ssh/ 를 사용할 컴퓨터에서 푸시하려는 사용자 이름으로 SSH 키를 생성 하십시오.

  2. https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/ 로 푸시하려는 github 사용자 계정에이 키를 추가 하십시오.

  3. SSH를 사용하여 복제하도록 선택

이 사용자를 해당 리포지토리로 푸시 할 수 있습니다.


2

Windows 및 Windows 용 사용자 Git 및 manager자격 증명 관리 (일명 Git-Credential-Manager-for-Windows Link )에서 토큰 을 https사용하여 GitHub로 푸시 할 때 사용자간에 쉽게 전환 할 수없는 문제가 있습니다 OAuth.

토큰이 다음과 같이 저장되기 때문입니다.

  • 인터넷 주소 : git:https://github.com
  • 사용자 이름: Personal Access Token
  • 암호: OAuth_Token

Internet Address예를 들어 URL의 변형이 작동하지 않습니다.

  • git:https://username@github.com
  • git:https://github.com/username
  • ...

해결책 : 네임 스페이스 . 이것은 다음의 구성에 대한 세부 사항에서 찾을 수 있습니다 Git-Credential-Manager-for-Windows.

인용 :

네임 스페이스

저장된 자격 증명의 네임 스페이스를 설정합니다.

기본적으로 GCM은 저장된 모든 자격 증명에 'git'네임 스페이스를 사용합니다.이 구성 값을 설정하면 전체적으로 또는 호스트별로 사용되는 네임 스페이스를 제어 할 수 있습니다.

git config --global credential.namespace name

이제 자격 증명을 Windows 자격 증명 관리자에 다음과 같이 저장하십시오.

  • 인터넷 주소 : git.username:https://github.com
  • 사용자 이름: Personal Access Token
  • 암호: OAuth_Token

다음과 같이 변경되었습니다 git.-> git.username(변경 한 곳)username 이든 당신이 고유 식별자로 할 수 있습니다, 실제 사용자 이름 또는를 위해)

이제 특정 항목을 사용하려는 저장소 내에서 다음을 실행하십시오.

git config credential.namespace git.username

(다시 ... username원하는 값으로 대체 하십시오)

당신 .git/config은 이제 다음을 포함합니다 :

[credential]
    namespace = git.username

vo! 올바른 자격 증명이 Windows 자격 증명 저장소에서 가져옵니다.

물론 이것은 어떤 사용자 / 이메일이 추진하고 있는지 변경하지 않습니다. 이를 위해 평소 user.nameuser.email


감사합니다. 이것은 나에게 가장 효과적이었습니다 (Windows 10). Windows 자격 증명에서 다른 자식 사용자 계정을 임시로 삭제하지 않고 "해킹"을하지 않습니다. 모든 리포지토리에 대해 하나의 전역 / 호스트 git 사용자가 있습니다. 그중 하나만 제외하고 다른 자격 증명이 필요합니다. 환경에 맞는 경우 Windows 자격 증명에있는 그대로 모든 것을 그대로두고 "특수"리포지토리로 이동하여 git config credential.namespace git.username언급 된대로 사용자 이름을 입력하십시오. 다음에 푸시하면 git은 username의 새로운 자격 증명을 요구합니다.
ford04

2

한 컴퓨터에서 두 번째 github ID를 얻는 방법을 알 수 없었습니다 (이 답변 중 어느 것도 저에게 도움이되지 않았습니다). 그러나 여러 다른 github 계정으로 나눌 수있는 방법을 알아 냈습니다.

동일한 사용자 이름으로 푸시하지만 다른 github 계정으로 푸시

  1. 제 2의 SSH 키 (설정 과 같이 당신의 2 github의 계정을)

  2. 계정 간 변경 :

새로운 2 번째 github 계정으로 푸시

ssh-add -D
ssh-add ~/.ssh/ssh_key_for_my_2nd_account
git push

내 메인 계정으로 푸시

ssh-add -D
ssh-add ~/.ssh/id_rsa   
git push


0

커밋이 발생하는 사용자 ID는 구성 파일에 저장됩니다.

저장소 vi .git / config의 맨 위로 이동

"[원격"origin "] 뒤에 나열된 url 줄을 변경하여 적절한 사용자 ID를 갖도록하십시오.


0

ssh를 사용하여

some_username / repository.git에 대한 권한이 Alice_username에 거부되었습니다 .

Alice_username으로 푸시하고 싶지는 않지만 Alice_username에 컴퓨터의 ssh 키가 github 계정에 추가되어 있지 않은지 확인하십시오.

alice의 github 계정에서 ssh 키를 삭제했으며 푸시가 작동했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.