자식이 터미널에서 잘못된 사용자로 푸시


112

자식과 터미널에 문제가 있습니다.

내 문제를 보여주는 갤러리가 있습니다. http://imgur.com/a/6RrEY

내 터미널에서 커밋을 푸시하면 git은 다른 사용자 이름으로 푸시한다고 말합니다. 그건 내 조직 (내 회사)의 사용자이며 커밋이 전혀 없으며 아무도 속한 것 같습니다. (갤러리 첫 번째 그림 확인)

그러나 이것은 내가 Mac 용 Github를 사용할 때 발생하지 않습니다. 피드에서 내가 직접 푸시 한 커밋을 볼 수 있습니다.

문제는 내 개인 저장소에도 영향을 미칩니다. 터미널은이 사용자와 함께 푸시하려고하기 때문에 해당 저장소에 커밋을 푸시 할 권한이 없다고 말합니다 (분명히 잘못되었습니다) : (갤러리 두 번째 그림 확인)

뭔지 맞춰봐 ? 이것은 Mac 용 Github에서도 발생하지 않습니다.

며칠 전에 컴퓨터를 새 것으로 바꿨 기 때문에 github의 모든 ssh 키를 재설정하고 Mac 용 Github에서 생성 한 새 키만 남겨 두었으므로 일부 유령 사용자 / ssh 키가 숨겨져 있다고 생각하지 않습니다. 어딘가에,이 hdd는 새로운 것입니다 : (갤러리 세 번째 그림 확인)

내 .gitconfig 파일은 모두 명확하며 내 자격 증명 만 있습니다. (갤러리 네 번째 그림 확인)

정말 이해가 안가요, 도움, StackOverflow, 당신은 나의 유일한 희망입니다.

(불쌍한 김프 기술과 스타 워즈 레퍼런스에 대해 사과드립니다)

편집 : ssh-add -l Mac 용 github에서 만든 좋은 ssh 키만 표시되며 github 계정이 하나만 있습니다.

EDIT2 : ssh -T git@github.com 나를 좋은 사용자로 인식하십시오.

EDIT3 : 몇 가지 테스트 후 내 터미널이 내 사용자 이름으로 커밋을 수행하는 것처럼 보이지만 다른 사용자로 푸시하면 Mac 용 Github는 좋은 사용자 이름으로 커밋하고 푸시합니다.이 상황은 내가 가지고 / 만드는 모든 저장소에서 발생합니다 (새로운 하나).

EDIT4 : 개인 저장소 git log --pretty="%h %an %ae"에서 내 좋은 사용자 이름을 보여줍니다.

EDIT5 : 내 .NET Framework 에서 내 자격 증명을 재정의하는 환경 변수의 흔적이 없습니다 env. 좋은 자격 증명으로 이러한 변수를 설정하려고해도 문제가 지속됩니다.

EDIT6 :/.git/config 저장소 의 경로에서 사용자를 강제하면 상황이 정상적으로 작동 하지만 좋은 옵션이라고 생각하지 않습니다.http://USER@github.com/USER/REPO.git

EDIT7 : 나를 위해 커밋을 푸시 한 git 사용자를 삭제했으며 다른 오류가 발생합니다.remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/USER/REPO.git/'

최종 편집 : homebrew와 함께 git을 설치하고 입력 git config --global push.default simple 했으며 이제 사용자를 강제하지 않고도 내 자격 증명을 사용합니다. 이상하다. 도와 주신 모든 분들께 감사드립니다. 당신은 훌륭한 사람들입니다!


2
확인 ~/.gitconfig및 $project_root/.git/config파일. 이 둘 중 하나는 확실히 사용자 이름에 대해 잘못 구성되었습니다.
— mu 無

1
답변 ansh0l에 감사드립니다. ~/.gitconfig명확하고 그렇습니다 $project_root/.git/config. 실제로 모든 개인 프로젝트에이 문제가 있습니다. 다른 사용자가 해당 저장소를 소유 한 조직에 속해 있으므로 작업 프로젝트를 푸시 할 수 있습니다.
— Yinfei 2014

그렇다면 여러 github 계정이 있습니까? 하나는 회 사용이고 다른 하나는 개인용입니까?
— mu 無

아니, 모든 것을 위해 하나뿐입니다.
— Yinfei 2014

1
성가신 해결책은 다른 SSH 키를 다시 생성하는 것입니다. 현재 SSH 키를 다른 서비스와 함께 사용하는 경우 의미가 없습니다.
— Eduardo Bautista 2014

답변:


168

직장에서이 문제가 발생했습니다. Mac과 함께 제공되거나 xcode를 설치할 때 제공되는 내장 git은 키 체인에 git 자격 증명을 캐시합니다. 나를위한 해결책은 다음과 같습니다.

키 체인 액세스 시작 (cmd + 스페이스를 통해 스포트라이트 시작, 키 체인 입력, Enter 누르기)

왼쪽 상단의 키 체인 아래에서 "로그인"을 선택합니다. 왼쪽 카테고리에서 "비밀번호"를 선택합니다.

"github"라는 이름을 찾아서 삭제합니다.


2
당신이 여기에 모든 github의 항목을 삭제 확인 및 로그인 구성을 설정 * 자식 설정 --global user.name <이름> * 자식 설정 --global user.email <이메일>
— Shank_Transformer

제 경우에는 SourceTree에이 문제가 발생했습니다. 키 체인에서 항목을 삭제하면 문제가 해결되었습니다!
— Shoerob

1
@Shank_Transformer 솔루션이 저에게 효과적이었습니다! 감사합니다!
— Nazariy

seahorseUbuntu 에서 검색 (또는 직접 실행)해야 할 수 있습니다 .
— caw

3
난 당신이 선생님에게 빚이다
— Baconbeastnz

46

github는 git의 설정이 아닌 ssh 키로 사용자를 식별합니다.

따라서 개인 계정에서 푸시를 시도 할 때 업무용 계정의 ssh 키가 키링에 없는지 확인해야하며 그 반대의 경우도 마찬가지입니다.

사용은 ssh-add -l당신의 열쇠 고리에있는 키를 결정하고, ssh-add -d <keyfile>이 작업에서 '원치 않는'SSH 키를 제거 dosent 경우, 키 링에서 키를 제거합니다 ~/.ssh/config.

출처

NB : Github는 이메일로만 커밋을 식별합니다.


5
이것이 내가 user.email올바르게 설정 되었음에도 불구하고 잘못된 github 계정을 지속적으로 사용하는 이유를 설명하는 유일한 대답입니다 . 내가 5 번 찬성 할 수 있으면 좋겠다.
— 크리스

1
내 경우에는 제거 SSH 키는 마법처럼 일ssh-add -D
— rPawel

이것은 나를 위해 일한 유일한 대답이었습니다. 감사!!
— Edward Hartnett

효과가 있었던 유일한 옵션. git이 올바른 키를 선택하지 않는 이유는 이치에 맞지 않습니다. ssh 파일을 언급하고 있으므로 config.js에서 사용해야합니다.
— Revanth Kumar

내가 할 때 ssh-add -l도움이되지 않는 답변을 얻습니다. 이 유형에서 4096 SHA256:lotsOfGibberish,about40chars (RSA)어떻게 우리에게이 정보를 알 수 없습니다.
— MiguelMunoz

20

다른 사용자가 제공 한 모든 훌륭한 옵션에도 불구하고이 문제를 해결하는 유일한 방법은 git을 완전히 다시 설치하고 git config --global push.default simple올바른 자격 증명을 다시 작성하도록 입력 하는 것입니다.


@VonC, 귀하의 답변은 훌륭했지만 전혀 작동하지 않았습니다. 이것은 나를 위해 일한 유일한 솔루션입니다. 나는 그것의 자식 문제 나 OSX 경우 궁금해 ...
— swilgosz

40
git config --system --unset credential.helper나를 위해 일 했으므로 이제 푸시시 GitHub 자격 증명을 다시 요청하고 올바른 사용자 ID와 암호를 제공 할 수 있습니다.
— CodeManX

@CoDEmanX 귀하의 답변은 나를 위해 일한 유일한 답변이었습니다. 이 문제를 접하는 다른 사람은 github에서 2FA를 사용하기 때문에 먼저 github gui에서 토큰을 생성하고 로컬 자격 증명을 재설정 한 후 명령 줄에서 내 비밀번호로 사용해야했습니다. 체크 아웃 https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/을 자세한 내용은
— vancouverwill

.gitconfig 파일입니다. 그것을 제거하거나 재설정하십시오. 인터뷰를 위해 시험 프로젝트를 제출했을 때이 문제에 직면했습니다. 젠장 아파요. 설정 파일과의
— 제작 : Girish

git config --system --unset credential.helperWindows 10 git bash에서는 작동하지 않습니다.error: could not lock config file C:/Program Files/Git/mingw64/etc/gitconfig: Permission denied
— alex

17

나는 Windows 10을 사용하고 있으며 오늘도 같은 문제에 직면했습니다. 제 경우에는 다른 사용자의 자격 증명이 Windows 자격 증명 관리자에 의해 저장되었습니다. 따라서 아래 명령으로 git 자격 증명 삭제 / 설정 해제, git config --global --unset credential.helper

도움이되지 않았습니다. 아래 방법에 따라 Windows에서 항목을 수동으로 삭제해야했습니다.

시작-> 제어판 ---> 사용자 계정 ---> 자격 증명 관리 ---> Windows 자격 증명

그런 다음 git : https://github.com 과 같은 항목을 검색하여 제거하십시오. 그 후에는 잘 작동합니다.


Gowtham 감사합니다
— Balint

감사합니다. 이전에는 Windows에서이 문제가 발생하지 않았지만 오늘이 문제가 발생했으며 여기에서 귀하의 의견을 보니 기쁩니다.
— RaKoDev

"도움이되지 않았다"고 말하지만 구성 파일을 잠글 수 없다는 메시지가 표시되면 위의 주석에서 지적한대로 상승 된 명령 프롬프트에서 실행해야한다는 문제가 있습니다. .
— Stefan

15

내 터미널이 내 사용자 이름으로 커밋을 수행하는 것처럼 보이지만 다른 사용자로 푸시합니다.

작성자 및 커미터 이름과 이메일 (GitHub에 중요)은 다음에서 파생됩니다.

git config user.name
git config user.email

그러나에서 언급 git config하고 git commit-tree, 그 값은 환경 변수로 대체 될 수있다 :

GIT_AUTHOR_NAME
GIT_AUTHOR_EMAIL
GIT_COMMITTER_NAME
GIT_COMMITTER_EMAIL

따라서 해당 변수를 다시 확인하십시오.

사용자를 .git/config저장소 에 강제로 넣으면 정상적으로 작동 하지만 좋은 옵션이라고 생각하지 않습니다.

하지만 좋은 해결책이되어야합니다.
https URL을 사용할 때 항상 올바른 사용자로 인증이 수행되도록 사용자를 지정합니다.

http://USER@github.com/USER/REPO.git

답장 해 주셔서 감사합니다 VonC! 불행하게도, 내 git config자격 증명을 맞아 내에서 설정에는 ENVIRONNEMENT 변수가 없습니다 /username/.bashrc파일은 ...
— Yinfei

@ Yinfei84 그럼에도 불구하고 ' env'출력을 확인하십시오 .
— VonC 2014

@ Yinfei84 (테스트를 위해) 해당 변수를 명시 적으로 설정하고 커밋과 푸시를 시도하면 어떻게 될까요? 그러면 더 잘 작동할까요?
— VonC 2014

방금 해냈고 문제가 지속됩니다.
— Yinfei 2014

2
명확하지 않은 경우 실례합니다. 사용자를 다음과 같은 경로로 강제하면 효과가 있음을 의미합니다.http://USER@github.com/USER/REPO.git
— Yinfei

9

임시 솔루션을 먼저 실행 killall ssh-agent한 다음 사용해야하는 계정에 대해 생성 된 SSH 키를 추가합니다.ssh-add ~/.ssh/id_4shameer

유형 오류가 발생할 때 여러 github 계정에서 작업하는 데 도움이됩니다. ERROR: Permission to user/repo-git.git denied to username.


1
MacOS keychain 에서 Github 항목 을 제거한 후 수행했으며 완벽하게 작동했습니다. 두 점은 이후 의 SSH-에이전트 와 함께 다시 시작해야 하고, 명령으로 실행되어야한다 . killalleval "$(ssh-agent -s)"ssh-addsudo
— arvymetal jul.

7

MAC을 사용하는 경우 키 체인 액세스 로 이동하여 git 액세스를 원하지 않는 사용자 항목을 제거하십시오.


4

나를위한 해결책은 github의 ~ / .ssh / config 파일에 항목을 추가하는 것이 었습니다. 다음과 같은 이유로이 작업을 수행해야했습니다.

  1. 동일한 키를 가진 여러 github 계정이 있습니다 (이렇게하지 마십시오!)
  2. ssh를 사용하여 'git push'하면 컴퓨터는 기본적으로 id_rsa를 가져와 ssh ID로 사용합니다.
  3. github는 (놀랍게도) 어떤 계정을 의미하는지 충돌을 해제 할 수 없습니다. 이는 제시된 키를 기반으로하는 계정이기 때문입니다. 두 개 이상의 계정에 연결되면 이와 같은 고통을 초래합니다. 범인은 오랫동안이 문제를 해결하고 있었는데 문제가 해결되었습니다.

내가 추가 한 항목은 다음과 같습니다.

Host github.com
    Hostname github.com
    Port 22
    User waterproofpatch
    IdentityFile ~/.ssh/id_rsa_waterproofpatch

내가 만들어 낸 새로운 id_rsa_waterproofpatch로 내 계정에 고유 키,. 내 ssh 구성의이 항목은 github.com에 대한 연결을 위해이 키를 제시하고자 함을 지정합니다.

또 다른 해결책은 아마도 다른 계정에 로그인하여 중복 ssh 키를 삭제하는 것입니다.


2

비슷한 문제가 있었는데 문제는 공개 키 파일에 마지막 줄에 내 이메일 주소가 포함되어 있다는 사실이었습니다. 내 구성의 사용자 설정을 재정의하는 것 같습니다. .pub 파일에서 내 이메일을 제거하고 내 저장소에 다시 업로드하자마자 올바른 사용자를 사용하여 Git이 연결되었습니다.


이것은 나를 위해 일했습니다. 공개 키 파일의 식별자가 원래 'name @ domain'형식 인 이유는 확실하지 않지만 그랬습니다.
— Brian Wagner

1

나를 위해 일한 것은 ssh URL 대신 Github repo의 https URL 을 사용하는 것이 었습니다 . Github 프로젝트 페이지로 이동하여 https URL을 클립 보드에 복사 한 다음 아래 두 번째 명령에 붙여 넣었습니다.

git remote rm origin
git remote add origin https://[...]

1

엉덩이가 얼마나 아파!

문제:

  1. git 허브에 저장소 만들기
  2. 로컬 시스템에 복제
  3. 403을 누를 수 없습니다.

알 수없는 이유로 git push가 잘못된 사용자를 사용하고 있습니다. 몇 가지 다른 git 허브 사용자 ID가 있습니다. 저는 2 개의 다른 회사에서 일하며 학생증도 있습니다.

나는 Mac에서 일하고 있습니다. 여기 내가 마침내 한 일입니다

1) credential.helper 제거

  • 자격 증명 도우미가 osxkeychain으로 설정되는 방법
  • 키 체인을 시작했을 때 로그인, 비밀번호를 클릭하고 github를 검색하여 3 개의 항목을 찾았습니다. 키 체인이 어떤 것을 사용할지 어떻게 알 수 있는지 모르겠습니다.

ㅏ. credential.helper가 구성된 위치를 파악해야합니다.

git config --local credential.helper
git config --global credential.helper
git config --system credential.helper

비. 올바른 무화과 파일을 찾으면 다음과 같이 제거하십시오.

git config --global --unset credential.helper

이제 내 로컬 저장소에서 .git / config 파일을 해킹했습니다.

나는 변했다

    url = https://github.com/aedavids/lab3RotationProject.git

에

    url = https://myGitHubUserId@github.com/aedavids/lab3RotationProject.git

1

내 특별한 경우에 문제는 .netrc액세스를 위해 사용 github.com하고 다른 사용자의 토큰으로 구성되었다는 것입니다.

machine github.com login <another-user-token>

0

키 체인을 지워도 도움이되지 않았습니다 ssh-add -D. 키를 다시 추가해야했습니다.ssh-add <keyfile>


0

MacOS High Sierra에서 id_rsa 및 id_rsa.pub 파일을 제거 (또는 * .bak로 이름 변경)하는이 문제를 해결했습니다. 여기 에서 아이디어 .

~ / .ssh / config에 적용해야하지만 두 파일의 이름을 바꾸기 전에 잘못된 사용자를 사용하는 사용자 지정 호스트 리디렉션이 있습니다.


0

그것이 나를 위해 일한 것입니다.

  1. .git-credentials 내에서 자격 증명 변경
  2. .gitconfig 내에서 전역 user.name 및 user.email 변경

0

리포지토리를 제거하고 다시 추가하는 것이 효과적이었습니다.

git remote rm origin
git remote add origin git@github.com:fguillen/MyApp.git

0

@ user542833 이 Windows 캐시를 사용하고 창에서 Github 자격 증명을 제거해야하고 Credential Manager다시 푸시를 시도하면 창에서 자격 증명을 요청하고 다시 설정 하기 때문에 내 자식을 제거한 후에도 Windows10 에서 동일한 문제가 발생 합니다.


이것은 때때로 나를 위해 일했지만 때로는 그렇지 않았습니다.
— bvdb

0

새 계정에서 새 GitHub 페이지 저장소로 푸시하려고 할 때이를 알아내는 데 6 시간이 걸렸습니다.

config user.name 및 user.email을 설정 한 후에도 기본 계정으로 설정됩니다.

ssh 키가 기본적으로 id_rsa (내 기본 계정)로 설정되기 때문입니다.

새 계정을 사용하려면 다음을 실행해야합니다.

ssh-add ~/.ssh/my_new_key

그러면 git이 푸시 할 때 새 키를 사용하게됩니다.

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