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


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.