git ดันมีผู้ใช้ผิดจากเทอร์มินัล


113

ฉันมีปัญหากับคอมไพล์และเทอร์มินัลของฉัน

นี่คือแกลเลอรีเพื่อแสดงปัญหาของฉัน: http://imgur.com/a/6RrEY

เมื่อฉันกดคอมมิตจากเทอร์มินัลของฉันคอมไพล์บอกว่าฉันดันพวกเขาด้วยชื่อผู้ใช้อื่นนั่นคือผู้ใช้จากองค์กรของฉัน (บริษัท ของฉัน) โดยไม่มีข้อผูกมัดใด ๆ เลยและดูเหมือนว่าจะไม่มีใครเลย: (ตรวจสอบแกลเลอรีรูปแรก)

แต่สิ่งนี้ไม่เกิดขึ้นเมื่อฉันใช้ Github สำหรับ mac ในฟีดฉันเห็นการกระทำที่ผลักดันด้วยตัวเอง

ปัญหายังส่งผลกระทบต่อที่เก็บส่วนบุคคลของฉันเทอร์มินัลของฉันบอกว่าฉันไม่มีสิทธิ์ในการส่งคอมมิตในที่เก็บเหล่านั้น (ซึ่งเห็นได้ชัดว่าผิด) เนื่องจากพยายามผลักดันกับผู้ใช้รายนี้: (ตรวจสอบรูปภาพที่สองของแกลเลอรี)

เดาอะไร? สิ่งนี้ไม่เกิดขึ้นกับ Github สำหรับ mac ด้วย

ฉันเปลี่ยนคอมพิวเตอร์ของฉันเป็นเครื่องใหม่เมื่อไม่กี่วันที่ผ่านมาดังนั้นฉันจึงรีเซ็ตคีย์ ssh ทั้งหมดของ github และเหลือเพียงอันใหม่ที่สร้างโดย Github สำหรับ Mac ดังนั้นฉันจึงไม่คิดว่ามีผู้ใช้ผี / คีย์ ssh ซ่อนอยู่ ที่ไหนสักแห่ง hdd นี้เป็นของใหม่: (ตรวจสอบแกลเลอรีรูปที่สาม)

ไฟล์. gitconfig ของฉันชัดเจนทั้งหมดมีเพียงข้อมูลรับรองของฉัน: (ตรวจสอบแกลเลอรีรูปที่สี่)

ฉันไม่เข้าใจจริงๆช่วยด้วย StackOverflow คุณเป็นความหวังเดียวของฉัน

(ขออภัยสำหรับทักษะ Gimp ที่ไม่ดีและข้อมูลอ้างอิงของ Star Wars)

แก้ไข: ssh-add -lแสดงเฉพาะคีย์ ssh ที่ดีที่สร้างโดย github สำหรับ mac และฉันมีบัญชี github เพียงบัญชีเดียว

EDIT2: ssh -T git@github.comรู้จักฉันในฐานะผู้ใช้ที่ดี

แก้ไข 3:หลังจากการทดสอบสองสามครั้งดูเหมือนว่าเทอร์มินัลของฉันจะทำการคอมมิชชันด้วยชื่อผู้ใช้ของฉัน แต่ดันใช้อีกอันหนึ่ง Github สำหรับ mac ยอมรับและผลักดันด้วยชื่อผู้ใช้ที่ดีสถานการณ์นี้เกิดขึ้นกับทุก repo ที่ฉันมี / สร้าง (แม้แต่ใหม่ คน)

แก้ไข 4:ในที่เก็บส่วนบุคคลgit log --pretty="%h %an %ae"แสดงชื่อผู้ใช้ที่ดีของฉัน

แก้ไข 5:ไม่มีสัญญาณของตัวแปรสภาพแวดล้อมที่จะแทนที่ข้อมูลรับรองของฉันในenvไฟล์. แม้ว่าฉันจะพยายามตั้งค่าตัวแปรเหล่านั้นด้วยปัญหาข้อมูลประจำตัวที่ดีก็ยังคงมีอยู่

แก้ไข 6:สิ่งต่าง ๆ จะทำงานได้ตามปกติถ้าฉันบังคับให้ผู้ใช้ไปในเส้นทาง/.git/configของที่เก็บ แต่ฉันไม่คิดว่านั่นเป็นตัวเลือกที่ดี:http://USER@github.com/USER/REPO.git

แก้ไข 7:เราลบผู้ใช้คอมไพล์ที่ผลักคอมมิตให้ฉันและสิ่งนี้นำมาซึ่งข้อผิดพลาดอื่น:remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/USER/REPO.git/'

การแก้ไขขั้นสุดท้าย: ฉันติดตั้งคอมไพล์ด้วย homebrew พิมพ์ git config --global push.default simple และตอนนี้ใช้ข้อมูลประจำตัวของฉันแม้ว่าจะไม่บังคับผู้ใช้ก็ตาม นั่นเป็นเรื่องแปลก ขอบคุณทุกคนสำหรับความช่วยเหลือคุณเป็นคนดี!


2
ตรวจสอบ~/.gitconfigและ$project_root/.git/configไฟล์ หนึ่งในสองคนนั้นกำหนดค่าชื่อผู้ใช้ผิดอย่างแน่นอน
.

1
ขอบคุณสำหรับคำตอบของคุณ ansh0l ~/.gitconfigมีความชัดเจนและเป็น$project_root/.git/configเช่นนั้น อันที่จริงฉันมีปัญหานี้กับโปรเจ็กต์ส่วนตัวทุกโปรเจ็กต์สามารถผลักดันได้เนื่องจากผู้ใช้รายอื่นนี้เป็นขององค์กรของฉันที่เป็นเจ้าของที่เก็บเหล่านั้น
Yinfei

คุณมีบัญชี github หลายบัญชีหรือไม่? หนึ่งสำหรับ บริษัท อื่น ๆ สำหรับการใช้งานส่วนบุคคล?
.

ไม่เพียงหนึ่งเดียวสำหรับทุกสิ่ง
Yinfei

1
วิธีแก้ปัญหาที่น่ารำคาญคือการสร้างคีย์ SSH ใหม่ หากคุณใช้คีย์ SSH ปัจจุบันกับบริการอื่นมันจะไม่มีจุดหมาย
Eduardo Bautista

คำตอบ:


168

ฉันเพิ่งมีปัญหานี้ในที่ทำงาน คอมไพล์ในตัวที่มาพร้อมกับ mac หรือมาเมื่อคุณติดตั้ง xcode แคชข้อมูลประจำตัวของ git ในพวงกุญแจ การแก้ไขสำหรับฉันคือ:

เริ่มการเข้าถึงพวงกุญแจ (เริ่มสปอตไลท์ผ่านช่องว่าง cmd + พิมพ์พวงกุญแจกด Enter)

ใต้พวงกุญแจทางด้านซ้ายบนเลือก "เข้าสู่ระบบ" ภายใต้หมวดหมู่ทางด้านซ้ายเลือก "รหัสผ่าน"

ค้นหาชื่อ "github" และลบออก


2
ตรวจสอบให้แน่ใจว่าคุณลบรายการ github ทั้งหมดที่นี่และตั้งค่าการตั้งค่าการเข้าสู่ระบบ * git config --global user.name <name> * git config --global user.email <email>
Shank_Transformer

ในกรณีของฉัน SourceTree ประสบปัญหานี้ การลบรายการในพวงกุญแจแก้ไขได้!
Shoerob

1
@Shank_Transformer โซลูชันของคุณใช้ได้ผลสำหรับฉัน! ขอบคุณ!
Nazariy

คุณอาจต้องค้นหา (หรือเปิดใช้โดยตรง) seahorseบน Ubuntu
caw

3
ฉันเป็นหนี้
บุญ

47

github ระบุตัวคุณด้วยคีย์ ssh ที่เห็นไม่ใช่โดยการตั้งค่าใด ๆ จาก git

ดังนั้นคุณต้องตรวจสอบให้แน่ใจว่ารหัส ssh ของบัญชีงานของคุณไม่ได้อยู่ในพวงกุญแจของคุณเมื่อคุณพยายามผลักดันจากบัญชีส่วนตัวของคุณและในทางกลับกัน

ใช้ssh-add -lเพื่อตรวจสอบว่ากุญแจอยู่ในพวงกุญแจของคุณและssh-add -d <keyfile>เพื่อเอากุญแจจากพวงกุญแจของคุณถ้ามัน dosent ทำงานลบ 'ที่ไม่พึงประสงค์' คีย์ SSH ~/.ssh/configจาก

แหล่งที่มา

หมายเหตุ: Github จะยังคงระบุการกระทำของคุณตามอีเมลเท่านั้น


5
นี่เป็นคำตอบเดียวที่อธิบายได้ว่าเหตุใดจึงใช้บัญชี github ผิดuser.emailอยู่เรื่อย ๆทั้งๆที่ฉันตั้งค่าถูกต้อง หวังว่าฉันจะโหวตเพิ่มได้ห้าครั้ง
คริส

1
ในกรณีของฉันการลบคีย์ ssh ทำงานเหมือนเสน่ห์ssh-add -D
rPawel

นี่เป็นคำตอบเดียวที่เหมาะกับฉัน ขอบคุณ !!
Edward Hartnett

ตัวเลือกเดียวที่ใช้งานได้ มันไม่สมเหตุสมผลว่าทำไม git ถึงไม่เลือกคีย์ที่ถูกต้อง เนื่องจากเรากำลังพูดถึงไฟล์ ssh จึงต้องใช้ใน config
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 ของคุณคือคำตอบเดียวที่เหมาะกับฉัน สำหรับใครก็ตามที่เจอปัญหานี้เป็นเพราะเราใช้ 2FA ในที่ทำงานกับ github และฉันจำเป็นต้องสร้างโทเค็นจาก github gui ก่อนและใช้รหัสนั้นเป็นรหัสผ่านจากบรรทัดคำสั่งหลังจากที่ฉันรีเซ็ตข้อมูลประจำตัวในเครื่องแล้ว! ตรวจสอบhttps://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/สำหรับรายละเอียด
แวนคูเวอร์

มันเป็นเพียงไฟล์. gitconfig ไม่ว่าจะลบหรือรีเซ็ต ... ฉันประสบปัญหานี้เมื่อส่งโครงการทดลองเพื่อสัมภาษณ์ แม้ว่ามันจะเจ็บ มีไฟล์ config
Girish

git config --system --unset credential.helperไม่ทำงานบน Windows 10 git bash:error: could not lock config file C:/Program Files/Git/mingw64/etc/gitconfig: Permission denied
อเล็กซ์

17

ฉันใช้ Windows 10 และฉันประสบปัญหาเดียวกันในวันนี้ ในกรณีของฉันข้อมูลประจำตัวของฉันสำหรับผู้ใช้รายอื่นถูกบันทึกโดยตัวจัดการข้อมูลประจำตัวของ Windows ดังนั้นการลบ / ยกเลิกการตั้งค่าข้อมูลรับรอง git ด้วยคำสั่งด้านล่าง git config --global --unset credential.helper

ไม่ได้ช่วย ฉันต้องลบรายการใน Windows ด้วยตนเองโดยทำตามวิธีด้านล่าง

เริ่ม -> แผงควบคุม ---> บัญชีผู้ใช้ ---> จัดการข้อมูลประจำตัวของคุณ ---> ข้อมูลประจำตัวของ Windows

จากนั้นค้นหารายการเช่น git: https://github.comและลบออก มันใช้งานได้ดีหลังจากนั้น


ขอบคุณ Gowtham
Balint

ขอบคุณฉันไม่เคยมีปัญหานี้มาก่อนใน Windows แต่วันนี้ฉันพบปัญหานี้และฉันยินดีที่จะเห็นความคิดเห็นของคุณที่นี่
RaKoDev

คุณบอกว่า "ไม่ได้ช่วย" แต่ถ้ามันให้ข้อความว่าไม่สามารถล็อคไฟล์ config ได้ปัญหาก็คือคุณต้องเรียกใช้จาก Command Prompt ที่ยกระดับขึ้นตามที่ระบุไว้ในความคิดเห็นด้านบน .
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ข้อมูลรับรองของฉันถูกต้องและไม่มีตัวแปรสภาพแวดล้อมที่ตั้งไว้ใน/username/.bashrcไฟล์ของฉัน...
Yinfei

@ Yinfei84 อย่างไรก็ตามตรวจสอบenvผลลัพธ์ '' ของคุณ
VonC

@ Yinfei84 จะเกิดอะไรขึ้นถ้า (เพื่อทดสอบ) คุณตั้งค่าตัวแปรเหล่านั้นอย่างชัดเจนและลองคอมมิตและพุช จะได้ผลดีกว่าไหม
VonC

ฉันเพิ่งทำไปและปัญหายังคงมีอยู่
Yinfei

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
ฉันทำอย่างนั้นหลังจากลบรายการGithubออกจากพวงกุญแจ MacOSแล้วและมันก็ทำงานได้อย่างสมบูรณ์ สองจุดหลังจากkillallที่ตัวแทน sshจะต้องมีการเริ่มต้นใหม่ด้วยeval "$(ssh-agent -s)"และคำสั่งจะต้องมีการดำเนินการด้วยssh-add sudo
arvymetal


4

วิธีแก้ปัญหาสำหรับฉันคือเพิ่มรายการในไฟล์ ~ / .ssh / config ของฉันสำหรับ github ฉันต้องทำสิ่งนี้เพราะ:

  1. ฉันมีบัญชี github หลายบัญชีที่มีคีย์เดียวกัน (อย่าทำแบบนี้!)
  2. เมื่อคุณ 'git push' โดยใช้ ssh คอมพิวเตอร์ของคุณจะใช้ id_rsa ตามค่าเริ่มต้นและใช้สิ่งนั้นเป็นข้อมูลประจำตัว ssh
  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 (และอัปโหลดไปยัง repo ของฉันอีกครั้ง) Git เชื่อมต่อโดยใช้ผู้ใช้ที่ถูกต้อง


สิ่งนี้ได้ผลสำหรับฉัน ไม่แน่ใจว่าเหตุใดตัวระบุในไฟล์คีย์สาธารณะเดิมจึงอยู่ในรูปแบบ 'name @ domain' แต่เป็น
Brian Wagner

1

สิ่งที่ได้ผลสำหรับฉันคือใช้https URL ของGithub repo แทนssh URL ฉันไปที่หน้าโครงการ Github และคัดลอก https URL ลงในคลิปบอร์ดของฉันจากนั้นวางลงในคำสั่งที่สองด้านล่าง:

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

1

เจ็บก้น!

ปัญหา:

  1. สร้าง repo บน git hub
  2. โคลนไปยังเครื่องท้องถิ่น
  3. ไม่สามารถดัน 403 ได้

เปลี่ยนด้วยเหตุผลที่ไม่ทราบสาเหตุ git โดยใช้ผู้ใช้ที่ไม่ถูกต้อง ฉันมีรหัสผู้ใช้ git hub ที่แตกต่างกันสองสามรายการ ฉันทำงานใน บริษัท ที่แตกต่างกัน 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

ข. เมื่อพบไฟล์ fig ที่ถูกต้องแล้วให้ลบออกดังนี้

git config --global --unset credential.helper

ตอนนี้ใน repo ในเครื่องของฉันฉันแฮ็กไฟล์. git / config

ฉันเปลี่ยนไป

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

ถึง

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

1

ในกรณีเฉพาะของฉันปัญหาคือฉันใช้ a .netrcเพื่อเข้าถึงgithub.comและได้รับการกำหนดค่าด้วยโทเค็นจากผู้ใช้รายอื่น:

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


0

ฉันแก้ไขปัญหานี้ในการลบ (หรือเปลี่ยนชื่อเป็น * .bak) ไฟล์ id_rsa และ id_rsa.pub บน MacOS High Sierra ความคิดจากที่นี่

ฉันมีการเปลี่ยนเส้นทางโฮสต์ที่กำหนดเองใน ~ / .ssh / config ที่ควรใช้ แต่ใช้ผิดผู้ใช้ก่อนที่ฉันจะเปลี่ยนชื่อไฟล์ทั้งสอง ...


0

นั่นคือสิ่งที่ได้ผลสำหรับฉัน:

  1. การเปลี่ยนข้อมูลรับรองภายใน. git-credentials
  2. การเปลี่ยน global user.name และ user.email ภายใน. gitconfig

0

สิ่งที่ได้ผลสำหรับฉันในการลบ repo และเพิ่มอีกครั้ง:

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

0

ฉันมีปัญหาเดียวกันใน windows10 แม้ว่าจะถอนการติดตั้งคอมไพล์แล้วก็ตามเนื่องจาก@ user542833บอกว่าเป็นเพราะแคชของ windows และคุณควรลบข้อมูลรับรอง Github ใน windows ของคุณCredential Managerและเมื่อคุณพยายามผลักดันอีกครั้ง windows จะถามข้อมูลประจำตัวของคุณและตั้งค่าอีกครั้ง


บางครั้งมันก็ใช้ได้ผลสำหรับฉัน แต่บางครั้งก็ไม่ได้ผล
bvdb

0

ใช้เวลาเพียง 6 ชั่วโมงในการค้นหาสิ่งนี้เมื่อพยายามผลักดันไปยัง repo หน้า GitHub ใหม่ในบัญชีใหม่

แม้ว่าหลังจากตั้งค่า config user.name และ user.email แล้วมันจะเริ่มต้นเป็นบัญชีหลัก

เนื่องจากคีย์ ssh จะเริ่มต้นเป็น id_rsa (บัญชีหลักของฉัน)

ในการใช้บัญชีใหม่ฉันต้องเรียกใช้:

ssh-add ~/.ssh/my_new_key

ซึ่งจะทำให้คอมไพล์ใช้คีย์ใหม่เมื่อกด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.