ทำไม Github ถึงขอชื่อผู้ใช้ / รหัสผ่านเมื่อทำตามคำแนะนำบนหน้าจอและผลักดัน repo ใหม่


298

ฉันเป็นเจ้าขององค์กรใน github และเพิ่งสร้าง repo และพยายามผลักดัน แต่ฉันพบปัญหาที่จะขอชื่อผู้ใช้ของฉันแม้ว่าฉันจะสามารถ SSH ได้:

$ ssh -T git@github.com
Hi Celc! You've successfully authenticated, but GitHub does not provide shell access.
$ git add .
$ git commit -m 'first commit'
[master (root-commit) 3f1b963] first commit
 6 files changed, 59 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 main.js
 create mode 100644 package.json
 create mode 100644 readme.markdown
 create mode 100644 views/index.ejs
 create mode 100644 views/layout.ejs
$ git remote add origin https://github.com/WEMP/project-slideshow.git
$ git push -u origin master
Username for 'https://github.com':

ผมทำอะไรผิดหรือเปล่า? เรื่องนี้ไม่เคยเกิดขึ้นกับฉันมาก่อน แต่ฉันเพิ่งอัพเกรดเป็นคอมไพล์ 1.7.10.3

คำตอบ:


662

อย่าใช้ HTTP ใช้ SSH แทน

เปลี่ยนแปลง

https://github.com/WEMP/project-slideshow.git 

ถึง

git@github.com:WEMP/project-slideshow.git

คุณสามารถทำได้ใน.git/configไฟล์


1
ขอบคุณ! ฉันเพิ่งรู้เรื่องนี้หลังจากอ่านstackoverflow.com/a/10126412/29347ฉันไม่คิดว่า github จะให้ repo remote เป็น HTTPS ซึ่งทำให้เกิดความสับสน
Kit Sunde

2
คุณสามารถเปลี่ยนตัวเลือกนี้โดยคลิกที่ปุ่มที่คุณคัดลอก URL โคลนของคุณ
Derek Adair

สำหรับ MacOS ปัญหาเมื่อคุณอัปเกรดเป็น macos ล่าสุด stackoverflow.com/a/39616339/1445102
1Rhino

12
นอกจากนี้คุณยังสามารถทำgit remote set-url origin git@github.com:user/repo.gitตามรายละเอียดในstackoverflow.com/questions/10126381/ …
และสุดท้าย

54

ฉันมีปัญหาเดียวกันนี้และสงสัยว่าทำไมมันไม่ได้เกิดขึ้นกับ repo bitbucket ที่ถูกโคลนด้วย https เมื่อมองเข้าไปเล็กน้อยฉันพบว่าการกำหนดค่าสำหรับ repo BB มี URL ที่รวมชื่อผู้ใช้ของฉัน ดังนั้นฉันจึงแก้ไขการกำหนดค่าสำหรับ repo GH ของฉันอย่างนั้นและ voila ไม่มีพรอมต์ชื่อผู้ใช้อีกต่อไป ฉันใช้ Windows

แก้ไขyour_repo_dir/.git/config(จดจำ: .gitซ่อนโฟลเดอร์)

เปลี่ยนแปลง:

https://github.com/WEMP/project-slideshow.git

ถึง:

https://*username*@github.com/WEMP/project-slideshow.git

บันทึกไฟล์ ทำการgit pullทดสอบ

วิธีที่เหมาะสมในการทำเช่นนี้อาจใช้คำสั่ง git bash เพื่อแก้ไขการตั้งค่า แต่การแก้ไขไฟล์โดยตรงดูเหมือนจะไม่เป็นปัญหา


เป็นจุดที่ดีถ้าคุณรวมชื่อผู้ใช้มันจะได้รับการจัดการโดยพวงกุญแจระบบปฏิบัติการ (อย่างน้อยก็ควรใน OSX และเห็นได้ชัดว่าใน Windows ด้วย) ไม่มีความแตกต่างระหว่างการแก้ไขไฟล์ด้วย notepad หรือ vim / emacs / nano / vi ฉันไม่ต้องกังวลมากนักเกี่ยวกับหัวสูงทางเทคนิคมันเป็นแค่ไฟล์ข้อความธรรมดา ๆ
Kit Sunde

20

นี่คือคำตอบอย่างเป็นทางการสำหรับสิ่งนี้:

หาก Git ขอให้คุณใส่ชื่อผู้ใช้และรหัสผ่านทุกครั้งที่คุณพยายามโต้ตอบกับ GitHub คุณอาจใช้ HTTPS clone URL สำหรับที่เก็บของคุณ

การใช้HTTPS รีโมต URLมีข้อดีบางประการ: การตั้งค่าง่ายกว่า SSH และมักจะทำงานผ่านไฟร์วอลล์และพร็อกซีที่เข้มงวด อย่างไรก็ตามจะแจ้งให้คุณป้อนข้อมูลประจำตัว GitHub ทุกครั้งที่คุณดึงหรือดันที่เก็บ

คุณสามารถกำหนดค่า Git เพื่อจัดเก็บรหัสผ่านให้คุณได้ หากคุณต้องการที่จะตั้งค่าที่อ่านทั้งหมดเกี่ยวกับการตั้งค่ารหัสผ่านการแคช


1
ขอบคุณ ฉันจะเถียงกับ Github ว่าการติดตั้งไม่ง่ายถ้าคุณจบที่นี่ (:
ecoologic

นี่คือคำตอบสำหรับคำถามเพราะคำถามถามทำไม ?
eli

14

ปรับปรุงเมื่อ @ Ianl ของคำตอบ ,

ดูเหมือนว่าหากเปิดใช้งานการรับรองความถูกต้องแบบสองขั้นตอนคุณต้องใช้โทเค็นแทนรหัสผ่าน คุณสามารถสร้างโทเค็นนี่

หากคุณต้องการปิดการใช้งานแจ้งให้ทั้งชื่อผู้ใช้และรหัสผ่านคุณสามารถตั้งค่า URL ดังต่อไปนี้ -

git remote set-url origin https://username:password@github.com/WEMP/project-slideshow.git

โปรดทราบว่า URL นั้นมีทั้งชื่อผู้ใช้และรหัสผ่าน นอกจากนี้.git/configไฟล์ควรแสดงการตั้งค่าปัจจุบันของคุณ


อัปเดต 20200128:

หากคุณไม่ต้องการเก็บรหัสผ่านในไฟล์ปรับแต่งคุณสามารถสร้างโทเค็นส่วนบุคคลของคุณและเปลี่ยนรหัสผ่านด้วยโทเค็นได้ นี่คือบางส่วนมีรายละเอียด

มันจะมีลักษณะเช่นนี้ -

git remote set-url origin https://username:token@github.com/WEMP/project-slideshow.git

ปลอดภัยไหม บางคนสามารถเข้าถึงข้อมูลนี้จากคอมพิวเตอร์ของฉันได้หรือไม่?
Akaisteph7

ใช่พวกเขาสามารถเข้าถึงได้จากคอมพิวเตอร์ของคุณเนื่องจากเก็บไว้เป็นข้อความธรรมดาใน.git/configไฟล์
kaushal

11

หมายเหตุเพิ่มเติม:

หากคุณได้เพิ่มรีโมตแล้ว ($ git รีโมตเพิ่มแหล่งกำเนิด ... ) และจำเป็นต้องเปลี่ยนรีโมตนั้นโดยเฉพาะให้ลบรีโมตก่อน (เริ่มต้นรีโมตรีโมต $ $ git) ก่อนที่จะเพิ่ม URL repo ใหม่และปรับปรุงใหม่ (โดยที่ "origin" เป็นชื่อของ repo ระยะไกล)

เพื่อใช้ตัวอย่างต้นฉบับ:

$ git remote add origin https://github.com/WEMP/project-slideshow.git
$ git remote rm origin
$ git remote add origin https://github-username@github.com/WEMP/project-slideshow.git

4
คุณไม่จำเป็นต้องลบรีโมตออก คุณสามารถเปลี่ยน URL:git remote set-url origin https://github-username@github.com/WEMP/project-slideshow.git
shovavnik

8

หากคุณใช้ HTTPS ตรวจสอบให้แน่ใจว่า URL ของคุณถูกต้อง ตัวอย่างเช่น:

$ git clone https://github.com/wellle/targets.git
Cloning into 'targets'...
Username for 'https://github.com': ^C

$ git clone https://github.com/wellle/targets.vim.git
Cloning into 'targets.vim'...
remote: Counting objects: 2182, done.
remote: Total 2182 (delta 0), reused 0 (delta 0), pack-reused 2182
Receiving objects: 100% (2182/2182), 595.77 KiB | 0 bytes/s, done.
Resolving deltas: 100% (1044/1044), done.

1
นั่นเป็นจุดที่ดีมาก! หากคุณมีการพิมพ์ผิดใน URL คุณจะได้รับแจ้งสำหรับ 'ชื่อผู้ใช้' แทนที่จะบอกว่าที่เก็บไม่มีอยู่
dmitrii

5

ฉันเพิ่งได้รับอีเมลจากผู้ดูแลระบบ github.com ที่ระบุต่อไปนี้: "โดยปกติแล้วเราแนะนำให้ผู้ใช้ URL HTTPS เว้นแต่ว่าพวกเขามีเหตุผลเฉพาะที่จะใช้โปรโตคอล SSH HTTPS นั้นปลอดภัยและตั้งค่าได้ง่ายกว่าดังนั้น เราจะตั้งเป็นค่าเริ่มต้นเมื่อมีการสร้างที่เก็บใหม่ "

การถามรหัสผ่านจะยอมรับรายละเอียดการเข้าสู่ระบบปกติของ github.com กวดวิชาเกี่ยวกับวิธีการตั้งค่ารหัสผ่านการแคชสามารถพบได้ที่https://help.github.com/articles/set-up-git#password-caching ฉันทำตามขั้นตอนในการสอนและมันก็ใช้ได้ผลสำหรับฉัน


1
URL ได้รับการอัปเดตแล้ว: help.github.com/articles/caching-your-github-password-in-git
MarkHu

4

เพราะคุณกำลังใช้วิธีHTTPS HTTPSต้องการให้คุณพิมพ์การเข้าถึงบัญชีของคุณทุกครั้งที่คุณพยายามที่จะผลักดันหรือดึงแต่มีวิธีหนึ่งเช่นกันที่เรียกว่าSSHและช่วยให้คุณสามารถบอกคอมไพล์ได้ว่าฉันอนุญาตให้คุณใช้บัญชีของฉันสำหรับพีซีเครื่องนี้ ฉันอีกครั้งเกี่ยวกับการเข้าถึงผู้ใช้ใด ในการใช้งานคุณต้องสร้างคีย์SSHและเพิ่มลงในบัญชี Github ของคุณเพียงครั้งเดียวคุณสามารถทำตามขั้นตอนเหล่านี้ได้

วิธีการสร้างคีย์ SSH สำหรับ Github


4

หากคุณเปิดใช้งานการรับรองความถูกต้องด้วยสองปัจจัยคุณจะต้องสร้างโทเค็นการเข้าถึงส่วนบุคคลและใช้สิ่งนั้นแทนรหัสผ่านปกติของคุณ ข้อมูลเพิ่มเติมที่นี่: https://help.github.com/articles/creating-an-access-token-for-command-line-use/


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