การพุชไปยัง Git ที่ส่งคืนรหัสข้อผิดพลาด 403 ร้ายแรง: คำขอ HTTP ล้มเหลว


634

ฉันสามารถโคลนสำเนาของ repo นี้ผ่านการรับรองความถูกต้อง HTTPS ฉันทำไปแล้วและต้องการที่จะผลักดันกลับไปที่เซิร์ฟเวอร์ GitHub ใช้ Cygwin บน Windows 7 x64

C:\cygwin\home\XPherior\Code\lunch_call>git push
Password:
error: The requested URL returned error: 403 while accessing https://MichaelDrog
alis@github.com/derekerdmann/lunch_call.git/info/refs

fatal: HTTP request failed

ตั้งค่าด้วยโหมด verbose ฉันยังคงงงงวยสวย

C:\cygwin\home\XPherior\Code\lunch_call>set GIT_CURL_VERBOSE=1

C:\cygwin\home\XPherior\Code\lunch_call>git push
Password:
* Couldn't find host github.com in the _netrc file; using defaults
* About to connect() to github.com port 443 (#0)
*   Trying 207.97.227.239... * 0x23cb740 is at send pipe head!
* Connected to github.com (207.97.227.239) port 443 (#0)
* successfully set certificate verify locations:
*   CAfile: C:\Program Files (x86)\Git/bin/curl-ca-bundle.crt
  CApath: none
* SSL connection using AES256-SHA
* Server certificate:
*        subject: 2.5.4.15=Private Organization; 1.3.6.1.4.1.311.60.2.1.3=US; 1.
3.6.1.4.1.311.60.2.1.2=California; serialNumber=C3268102; C=US; ST=California; L
=San Francisco; O=GitHub, Inc.; CN=github.com
*        start date: 2011-05-27 00:00:00 GMT
*        expire date: 2013-07-29 12:00:00 GMT
*        subjectAltName: github.com matched
*        issuer: C=US; O=DigiCert Inc; OU=www.digicert.com; CN=DigiCert High Ass
urance EV CA-1
*        SSL certificate verify ok.
> GET /derekerdmann/lunch_call.git/info/refs?service=git-receive-pack HTTP/1.1
User-Agent: git/1.7.4.3282.g844cb
Host: github.com
Accept: */*
Pragma: no-cache

< HTTP/1.1 401 Authorization Required
< Server: nginx/1.0.4
< Date: Thu, 15 Sep 2011 22:44:41 GMT
< Content-Type: text/plain
< Connection: keep-alive
< Content-Length: 55
< WWW-Authenticate: Basic realm="GitHub"
<
* Ignoring the response-body
* Expire cleared
* Connection #0 to host github.com left intact
* Issue another request to this URL: 'https://MichaelDrogalis@github.com/dereker
dmann/lunch_call.git/info/refs?service=git-receive-pack'
* Couldn't find host github.com in the _netrc file; using defaults
* Re-using existing connection! (#0) with host github.com
* Connected to github.com (207.97.227.239) port 443 (#0)
* 0x23cb740 is at send pipe head!
* Server auth using Basic with user 'MichaelDrogalis'
> GET /derekerdmann/lunch_call.git/info/refs?service=git-receive-pack HTTP/1.1
Authorization: Basic XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
User-Agent: git/1.7.4.3282.g844cb
Host: github.com
Accept: */*
Pragma: no-cache

< HTTP/1.1 401 Authorization Required
< Server: nginx/1.0.4
< Date: Thu, 15 Sep 2011 22:44:41 GMT
< Content-Type: text/plain
< Connection: keep-alive
< Content-Length: 55
* Authentication problem. Ignoring this.
< WWW-Authenticate: Basic realm="GitHub"
* The requested URL returned error: 401
* Closing connection #0
* Couldn't find host github.com in the _netrc file; using defaults
* About to connect() to github.com port 443 (#0)
*   Trying 207.97.227.239... * 0x23cb740 is at send pipe head!
* Connected to github.com (207.97.227.239) port 443 (#0)
* successfully set certificate verify locations:
*   CAfile: C:\Program Files (x86)\Git/bin/curl-ca-bundle.crt
  CApath: none
* SSL re-using session ID
* SSL connection using AES256-SHA
* old SSL session ID is stale, removing
* Server certificate:
*        subject: 2.5.4.15=Private Organization; 1.3.6.1.4.1.311.60.2.1.3=US; 1.
3.6.1.4.1.311.60.2.1.2=California; serialNumber=C3268102; C=US; ST=California; L
=San Francisco; O=GitHub, Inc.; CN=github.com
*        start date: 2011-05-27 00:00:00 GMT
*        expire date: 2013-07-29 12:00:00 GMT
*        subjectAltName: github.com matched
*        issuer: C=US; O=DigiCert Inc; OU=www.digicert.com; CN=DigiCert High Ass
urance EV CA-1
*        SSL certificate verify ok.
* Server auth using Basic with user 'MichaelDrogalis'
> GET /derekerdmann/lunch_call.git/info/refs HTTP/1.1
Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
User-Agent: git/1.7.4.3282.g844cb
Host: github.com
Accept: */*
Pragma: no-cache

* The requested URL returned error: 403
* Expire cleared
* Closing connection #0
error: The requested URL returned error: 403 while accessing https://MichaelDrog
alis@github.com/derekerdmann/lunch_call.git/info/refs

fatal: HTTP request failed

นี่คือเวอร์ชันของ git และ curl ที่ฉันมี:

C:\Users\XPherior>git --version
git version 1.7.4.msysgit.0

C:\Users\XPherior>curl --version
curl 7.21.7 (amd64-pc-win32) libcurl/7.21.7 OpenSSL/0.9.8r zlib/1.2.5
Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtsp
smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate Largefile NTLM SSL SSPI libz

3
ดูความคิดเห็นซึ่งควรโพสต์เป็นคำตอบ ทำให้ใช้งานได้กับ 1.7.1 มีปัญหาการแจ้งผู้ใช้ / รหัสผ่านที่ขาดหายไปเช่นกัน อุปกรณ์ประกอบฉากเพื่อstackoverflow.com/a/9575906/805284 ...
sjas

2
ตรวจสอบผู้ใช้มีการอ่าน / เขียนการเข้าถึงพื้นที่เก็บข้อมูล
Céline Aussourd

22
ในอนาคตอย่าวาง "การอนุญาต: พื้นฐาน <stuff>" เมื่อแสดงตัวอย่างส่วนหัว http ง่ายต่อการถอดรหัส base64 และรับรหัสผ่านของคุณ @ ไมค์: หากคุณยังไม่ได้เปลี่ยนรหัสผ่าน GitHub ตั้งแต่คุณโพสต์คำถามนี้ฉันขอแนะนำให้คุณทำเช่นนั้น
FlipMcF

4
@FlipMcF ขอบคุณชาย ก็ไม่รู้ตัว เปลี่ยนรหัสผ่าน
ไมค์

6
@Mike NP ตอนนี้ฉันได้โปรโมตบล็อกเล็ก ๆ น้อย ๆ ที่ฉันเขียนลงไป: goo.gl/bpae94
FlipMcF

คำตอบ:


836

ฉันมีปัญหาเดียวกันและหาสาเหตุที่แท้จริง

Github ดูเหมือนว่ารองรับเฉพาะวิธี ssh ในการอ่านและเขียน repo แม้ว่าวิธี https จะแสดง 'อ่านและเขียน' ด้วย

ดังนั้นคุณต้องเปลี่ยนการตั้งค่า repo บนพีซีเป็นวิธี ssh:

  1. แก้ไข.git/configไฟล์ภายใต้ไดเรกทอรี repo ของคุณ
  2. ค้นหาurl=รายการภายใต้ส่วน[remote "origin"]
  3. เปลี่ยนจากการurl=https://MichaelDrogalis@github.com/derekerdmann/lunch_call.git url=ssh://git@github.com/derekerdmann/lunch_call.gitนั่นคือเปลี่ยนข้อความทั้งหมดก่อนที่จะเป็น@สัญลักษณ์ssh://git
  4. บันทึกconfigไฟล์และออกจาก ตอนนี้คุณสามารถใช้git push origin masterซิงค์ repo ของคุณบน GitHub ได้แล้ว

56
ปัญหานี้มักเกิดขึ้นเมื่อคุณโคลนด้วยที่อยู่แบบอ่านอย่างเดียว git (ซึ่งเป็นค่าเริ่มต้นเมื่อคุณไม่ได้เข้าสู่ระบบ) แทนที่จะเป็นที่อยู่ read + write ssh
Nitrodist

43
ฉัน.git/configชอบมากกว่านี้url=https://github.com/mynickname/my_repo.gitแต่ฉันก็เปลี่ยนเหมือนurl=ssh://git@github.com/mynickname/my_repo.gitและมันก็ใช้กลอุบาย
Guillaume Flandre

12
คุณสามารถเปลี่ยน repo url ด้วยgit remote set-urlคำสั่ง ดูคำตอบของฉันด้านล่าง
fetsh

7
หรือเพียงแค่เปลี่ยนจากบรรทัดคำสั่งโดยใช้git remote set-url <name> git@github.com:<username>/<repo>.git
iGbanam

42
สำหรับผู้ที่กำลังมองหาวิธีการแก้ปัญหาที่ไม่ใช่ SSH ตรวจสอบคำตอบอื่น ๆ ที่นี่ ดูเหมือนว่าการเพิ่มชื่อผู้ใช้ของคุณใน URL url จะทำงานได้ (เปลี่ยน URL การกำหนดค่าเพื่อให้ https: // @ github.com / ... คือUNAME@github.com / ... )
Cyrus

431

ในการเข้าสู่ระบบโดยใช้httpsโปรโตคอลอย่างแน่นอนคุณควรตั้งค่าข้อมูลรับรองการตรวจสอบสิทธิ์ของคุณเป็น git Remote URI :

git remote set-url origin https://yourusername@github.com/user/repo.git

git pushแล้วคุณจะได้รับการถามรหัสผ่านเมื่อพยายามที่จะ

อันที่จริงนี่เป็นรูปแบบการตรวจสอบสิทธิ์ http คุณสามารถตั้งรหัสผ่านได้ด้วย:

https://youruser:password@github.com/user/repo.git

คุณควรทราบว่าหากคุณทำเช่นนี้รหัสผ่าน GitHub ของคุณจะถูกเก็บไว้ในรูปแบบธรรมดาในไดเรกทอรี. git ของคุณซึ่งไม่พึงประสงค์อย่างเห็นได้ชัด


12
SSH ถูกบล็อกในที่ทำงานดังนั้นฉันต้องใช้ HTTPS การเพิ่มชื่อผู้ใช้แก้ไขปัญหาของฉัน
David Poole

32
นี่ควรเป็นคำตอบที่ยอมรับได้ ไม่มีเหตุผลที่จะแก้ไขไฟล์กำหนดค่าด้วยตนเองเมื่อมีอินเตอร์เฟสบรรทัดคำสั่งอยู่
Steve Bennett

4
สำหรับฉันด้วยวิธีนี้ ( ชื่อผู้ใช้ @ github ... ) ขอรหัสผ่านและทำงานในขณะที่ ssh: // git @ github ... ล้มเหลวในการคาดหวังรหัสสาธารณะรับรองความถูกต้อง
Steve Bennett

1
ทำงานได้และควรเป็นคำตอบที่ยอมรับได้! โดยเฉพาะอย่างยิ่งในสภาพแวดล้อมที่ไม่สามารถใช้งาน ssh นี่คือวิธีที่จะไป ขอบคุณ!
AndreasEK

3
@Achint เป็นรูปแบบการตรวจสอบสิทธิ์ คุณสามารถตั้งรหัสผ่านของคุณได้เช่นกันhttps://youruser:password@github.com/user/repo.gitแม้ว่าจะไม่ปลอดภัย
Thiago Macedo

113

หนึ่งนอกจากนี้ขนาดเล็กเพื่อคำตอบของฌอน

แทนที่จะแก้ไข.git/configไฟล์ด้วยตนเองคุณสามารถใช้git remote set-urlคำสั่ง

ในกรณีของคุณควรเป็น:

git remote set-url origin ssh://git@github.com/derekerdmann/lunch_call.git

ฉันพบว่าง่ายและสะอาดกว่า messing รอบด้วยไฟล์ dot


ฉันไม่ทราบว่านี่เป็นเพียงโพสต์เก่าและคอมไพล์มีการเปลี่ยนแปลง แต่เป็นวันนี้เพื่อแก้ไขปัญหาที่ฉันต้องใช้git remote set-url origin ssh://git@github.com:derekerdmann/lunch_call.gitกับลำไส้ใหญ่ระหว่าง github.com และชื่อ repo
KevinL

56

แก้ไข.git/configไฟล์ภายใต้ไดเรกทอรี repo ของคุณ

ค้นหาurl=รายการภายใต้ส่วน[remote "origin"]

เปลี่ยนจากurl=https://github.com/rootux/ms-Dropdown.gitเป็น https://USERNAME@github.com/rootux/ms-Dropdown.git

USERNAMEชื่อผู้ใช้ GitHub ของคุณอยู่ที่ไหน


คำตอบนี้ไม่ได้ใช้กับปัญหาของฉัน URL ของฉันใน.git/configการตั้งค่าที่จะ ` github.com/myrepo/subproject'
kilojoules

มีปัญหากับ Android Studio ทำงานได้ดี
AndroidDev

46

คำตอบอื่น ๆ ที่แนะนำให้เปลี่ยนไปใช้การเรียงลำดับของพลาดจุด SSH รองรับ HTTPS แต่คุณต้องเข้าสู่ระบบด้วยรหัสผ่าน GITHUB ไม่ใช่รหัสผ่าน SSH ของคุณ (ซึ่งเป็นสิ่งที่ทำให้ฉันมีข้อผิดพลาดที่แน่นอนเหมือนกัน)

ฉันมีปัญหาเดียวกัน แต่ให้แน่ใจว่าใช้รหัสผ่าน GitHub จริงของฉันที่พร้อมท์รหัสผ่านเทอร์มินัลแก้ไขปัญหาโดยไม่มีการเปลี่ยนแปลงการกำหนดค่าหรือหันไปใช้ SSH

เหตุผลที่สำคัญที่ต้องทราบสิ่งนี้คือสถาบันสาธารณะหลายแห่ง (เช่นโรงเรียนของฉัน) จะบล็อก SSH แต่อนุญาต HTTPS (ซึ่งเป็นเหตุผลเดียวที่ฉันเริ่มโคลนนิ่ง HTTPS ตั้งแต่แรก)

หวังว่าจะช่วยให้คนอื่นมีปัญหาเดียวกัน ...


1
แต่ทำไม ฉันไม่ต้องทำแบบนั้นในอดีต ใบรับรองหมดอายุหรือบางอย่าง
Thufir

ไม่แน่ใจว่าผมไม่ได้เป็นผู้เชี่ยวชาญว่าเป็นเพียงวิธีการที่ฉันได้ไปทำงานในกรณีของฉัน :)
ธนาคารศรีนคร

เดียวกัน @ Thufir ฉันไม่รู้ว่าทำไมมันถึงใช้งานได้ในทันที
Nick Manning

ฉันเข้าสู่ระบบได้ด้วยชื่อผู้ใช้และรหัสผ่านบนเบราว์เซอร์ แต่เมื่อฉันพยายามgit pushแจ้งให้ au และ p และผลลัพธ์ถูกปฏิเสธสิทธิ์ .... คุณรู้ไหมว่าฉันพลาดอะไรไป?
โอมาร์

26

ข้อผิดพลาดและการแก้ไขเดียวกันในMac OS X

ทุกอย่างทำงานได้ดีจนกระทั่งฉันสร้าง บัญชีใหม่ใน GitHubและพยายามผลักดัน

$ git push -u origin master

และได้รับข้อผิดพลาด:

รีโมต: การอนุญาตให้แก่ NEWUSER / NEWREPO.git ถูกปฏิเสธเป็น OLDUSER ร้ายแรง: ไม่สามารถเข้าถึง ' https://github.com/NEWUSER/NEWREPO.git/ ': URL ที่ร้องขอส่งคืนข้อผิดพลาด: 403

ควรมีการแก้ไขโดยการตั้งค่า user.name สำหรับ repo ทั่วโลกหรือปัจจุบัน

$ git config –-global user.name NEWUSER
$ git config user.name NEWUSER

แต่มันก็ไม่ได้

ฉันได้รับการแก้ไขโดยการลบ OLDUSER ที่เกี่ยวข้องกับ GitHub จากแอพ Keychain Access ในส่วนรหัสผ่าน จากนั้นคำสั่ง push ก็ประสบความสำเร็จ

$ git push -u origin master

การอ้างอิง


การลบ OLDUSER ออกจาก Keychain Access App ได้ผลสำหรับฉัน
Augusto Triste

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

23

หากคุณใช้ windows บางครั้งสิ่งนี้อาจเกิดขึ้นเพราะ Windows เก็บข้อมูลรับรองสำหรับ repo ภายนอก (ในกรณี Github ของเรา) ในที่เก็บข้อมูลของตัวเอง และข้อมูลรับรองที่บันทึกไว้อาจแตกต่างจากที่คุณต้องการในขณะนี้

ป้อนคำอธิบายรูปภาพที่นี่

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


"คุณอาจต้องตรวจสอบตัวจัดการข้อมูลประจำตัว windows และลบรายการ github ภายใต้control panel > user accounts > credential manager > Windows credentials > Generic credentials" รายละเอียดจากโพสต์นี้: stackoverflow.com/a/37450495
Miguel

มันใช้งานได้สำหรับฉันฉันกำลังดิ้นรนเกือบ 2 วันและในที่สุดก็มาถึงทางออก ขอบคุณมาก.
Sufiyan Ansari

1
คุณช่วยชีวิตฉัน!
writeToBhuwan

1
ฉันประสบปัญหานี้มานานกว่าหนึ่งเดือนขอบคุณ
Samson Nzuki

1
อัจฉริยภาพ ขอบคุณมาก
Vinod Kumar

18

สิ่งนี้ใช้ได้กับฉัน -:

git remote set-url origin https://username@github.com/user/repo.git

หวังว่ามันจะช่วย


1
งานที่ดี. ตั้งค่าผู้ใช้!
marlonpya

1
วิธีนี้ช่วยได้ด้วย git v1.7 ใน CentOS 6.10 x86 ฉันคาดหวังว่ารหัสผ่าน promopt จะปรากฏขึ้น (แทนคีย์ SSH) และมันก็ทำได้ (โดยเตรียมไว้<username>@ก่อนgithub.comใน URL ระยะไกล) ขอบคุณ!
Raven vulcan

17

ฉันคิดว่า @deepwaters ได้คำตอบที่ถูกต้องสำหรับเวอร์ชั่นที่เก่ากว่า HTTPS URL ต้องมีชื่อผู้ใช้ ฉันมี git 1.7.0.4 และgit push origin masterจะไม่ขอรหัสผ่านจนกว่าฉันจะเพิ่มมัน


13

อัพเกรดคอมไพล์ของคุณ GitHub ได้ตอบคำถามนี้ที่https://help.github.com/articles/error-the-requested-url-returned-error-403


มันครึ่งคำตอบแน่นอน อีกครึ่งหนึ่งเป็นสิ่งที่เรามีที่นี่
Mike

11

รหัส 403 คือ "ต้องห้าม" เซิร์ฟเวอร์เห็นคำขอของคุณและปฏิเสธ คุณได้รับอนุญาตให้ส่งไปยังพื้นที่เก็บข้อมูลนั้นหรือไม่


1
ฉันและเพื่อนกำลังมีปัญหาเดียวกัน repo เป็นของฉันและเขาไม่สามารถผลักดัน เราจะแก้ไขได้อย่างไร
gibson

วิธีรับ persmisson
Bawantha

9

จริงๆแล้วฉันมีวิธีแก้ไขที่ง่ายมาก ทั้งหมดที่ฉันทำคือแก้ไขไฟล์ git config ต่างกันหลังจากโคลนที่เก็บ URL ของแหล่งกำเนิดจากระยะไกลเป็นสิ่งที่คุณต้องแก้ไขในเริ่มต้นของคุณตั้งค่าไฟล์ ควรมีลักษณะเหมือนที่เห็นด้านล่าง

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = https://*username*@github.com/*username*/*repository*.git
[branch "master"]
    remote = origin
    merge = refs/heads/master

^ this (หรือหนึ่งในตัวแปรด้านล่าง)
Austin France

การเพิ่มชื่อผู้ใช้ก่อน github.com แก้ไขให้ฉัน
เชน

ยินดีต้อนรับคุณ @ ÅdəəlÅhmåd สนับสนุนความพยายามโดยยกเลิกคำตอบเพื่อที่คนอื่น ๆ จะได้ชื่นชม
larrytech

8

คิดออก ฉันโคลน HTTPS การตั้งค่าคีย์ SSH สาธารณะของฉันการโคลน SSH และการกด SSH คงที่


อืม ... แต่เมื่อไรที่คุณไม่สามารถใช้อะไรได้นอกจาก https เพราะเป็นไฟร์วอลล์คอร์ปตัวอย่างเช่น ... ตามบล็อก github การเข้าถึง https ถูกเพิ่มเข้าไปใน github เพื่อจุดประสงค์นั้น
filofel

1
ฉันไม่รู้จริงๆ ฉันมักจะโคลน SSH อยู่เสมอ
Mike

เพียงเพื่อลูกหลาน (ฉันสังเกตเห็นการประทับเวลา) เกี่ยวกับความคิดเห็นของ filofel: ตรวจสอบคำตอบของฉันที่ระบุไว้ข้างต้น ฉันมีข้อ จำกัด แบบเดียวกันกับที่คุณพูดถึงที่โรงเรียนของฉันและพบว่าฉันกำลังส่งรหัสผ่าน / วลีรหัสผ่านผิดไปยังหน้าจอแจ้งเตือนเครื่อง หวังว่ามันจะช่วยคนอื่นด้วยปัญหาเดียวกัน
BMB

8
  1. คลิกที่ที่เก็บของคุณ
  2. ทางด้านขวามือให้คลิกที่ "การตั้งค่า"
  3. ที่แผงตัวเลือกด้านซ้ายให้คลิกที่ "ผู้ทำงานร่วมกัน"
  4. เพิ่มชื่อบุคคลที่คุณรู้จักใน GitHub
  5. คลิก "เพิ่มผู้ทำงานร่วมกัน"

หลังจากนี้ "Push to Git" ของเราทำงานได้ดี


ขอบคุณ! มีประโยชน์จริงๆ!
sailfish009


7

ทำเช่นนี้เพื่อแก้ไขปัญหาชั่วคราว

git push -u https://username:password@github.com/username/repo_name.git master


เรียบง่ายและผลงาน
Bawantha

6

ฉันพบข้อผิดพลาดเดียวกันและสาเหตุเป็นคนโง่ - ฉันไม่มีสิทธิ์ในการส่งไปยังแหล่งเก็บข้อมูลที่เลือก ฉันไม่ได้รู้ว่าฉันต้อง

  1. แยกโครงการที่เลือกไว้ก่อน
  2. ที่เก็บโคลนแบบโลคัล
  3. กระทำการเปลี่ยนแปลงของฉันในพื้นที่
  4. ผลักดันการเปลี่ยนแปลงไปยังโคลน GitHub ของฉัน
  5. คำขอดึงคำขอไปยังต้นน้ำ

ตามที่อธิบายไว้ในhttps://help.github.com/categories/63/articles


1
ไม่ใช่โง่นี่คือคำตอบที่ถูกต้องสำหรับผู้มีส่วนร่วมครั้งแรกไปยังที่เก็บสาธารณะ
DaReal

5

สำหรับผู้ที่มีสิทธิ์ปฏิเสธข้อผิดพลาด403ในขณะที่ใช้ssh (ตามXiao ) หรือhttp URL ลองคำสั่งเหล่านี้

>git config --global --unset-all credential.helper

>git config --unset-all credential.helper

ด้วยสิทธิ์ของผู้ดูแลระบบ

>git config --system --unset-all credential.helper

ตอนนี้ทุกครั้งที่ Git จะขอล็อกอินและรหัสผ่าน git config --global credential.helper storeช่วยให้พวกเขาผ่าน
CoolMind

4

เปลี่ยนจาก

url=https://MichaelDrogalis@github.com/derekerdmann/lunch_call.git 

ถึง

url=ssh://git@github.com/derekerdmann/lunch_call.git

มันได้ผล!

อย่าลืม "คอมไพล์" ก่อน "@"


มันใช้งานได้สำหรับฉัน (ใช้ CentOS Server กับ RStudio หลังพรอกซี) ตั้งค่าพร็อกซีก่อน: git config --global http.proxy http://proxyUsername:proxyPassword@proxy.server.com:portจากนั้นใช้คำสั่งgit remote set-url originเพื่อสลับที่อยู่
Alexandre georges

3

สำหรับทุกคนที่อยากรู้อยากเห็นเครื่อง Mac ของฉันกับ lucid vm วิ่ง git 1.7.6 เทียบกับ 1.7.0.4 และ repo เดียวกันที่แน่นอนคือ pushable จาก mac ของฉัน (git ที่ใหม่กว่า) แต่ไม่ใช่ VM

รุ่นขดเดียวกัน บางทีบางรุ่น git ที่เก่ากว่าไม่รองรับ https push?


ใช่ https push to github ทำงานได้ที่นี่ (แม้ผ่านพร็อกซีด้วยรหัสผ่าน) ฉันใช้คอมไพล์ 1.7.3 สำหรับฉันมันล้มเหลวก่อนเพราะฉันพิมพ์รหัสผ่านผิด
guettli

9
มันใช้งานได้กับฉันด้วย git 1.7.1 แต่มีสิ่งหนึ่งที่คุณต้องให้ความสนใจเช่นกัน (และนั่นคือสิ่งที่ฉันพลาดในการลองครั้งแรก): ให้ชื่อผู้ใช้ใน HTTPS-URL เช่นurl=https://username@github.com/username/repo.git
lwho

3

เพิ่มชื่อผู้ใช้เป็นส่วนหนึ่งของ URL และข้อผิดพลาดนี้เกิดขึ้นเนื่องจากคำสั่ง git กำลังกด http แทน https ดังนั้นตั้งค่า URL

git remote set-url origin https://<username>@github.com/Path_to_repo.git

หลังจากนั้นคุณจะถูกถามให้ใส่รหัสผ่าน:


3

อะไรที่ทำให้ฉัน:

repo ของฉันเป็นทางแยกและยังเชื่อมโยงกับ repo ผู้ปกครอง

git remote -v

จะบอกคุณว่าเป็น repo ของคุณหรือไม่

git remote set-url origin https://github.com/USERNAME/OTHERREPOSITORY.git

ช่วยให้คุณกำหนดค่าใหม่เป็น repo ของคุณแล้วให้คุณกด


3

คำตอบข้างต้นไม่เหมาะกับฉัน enterpriseบัญชี GitHubทำตามขั้นตอนเหล่านี้เพื่อผลักดันผ่านวิธีการสร้างคีย์ ssh

สร้าง repo โดยไปที่บัญชี git ของคุณ

สร้างคีย์ ssh:

ssh-keygen -t rsa -C "your_email@example.com"

คัดลอกเนื้อหาของไฟล์ ~ / .ssh / id_rsa.pub ไปยังคีย์ SSH ของคุณในการตั้งค่าบัญชี GitHub ของคุณ ทดสอบคีย์ SSH:

ssh -T git@github.com
clone the repo:
git clone git://github.com/username/your-repository

ตอนนี้ cd ไปยังโฟลเดอร์ git clone ของคุณแล้วทำ:

git remote set-url origin git@github.com:username/your-repository.git

ตอนนี้ลองแก้ไขไฟล์ (ลองใช้ README) จากนั้นทำ:

git add -A
git commit -am "my update msg"
git push -u origin master

อัปเดต: เวอร์ชัน git ใหม่ดูเหมือนว่าจะไม่แนะนำให้มีไฟล์ใด ๆ ในขณะที่สร้าง repo ใหม่ ดังนั้นให้ทำ repo เปล่า


2

ฉันพบความหลากหลายของปัญหานี้

ปัญหาไม่ได้เปลี่ยนโปรโตคอลจาก https เป็น ssl แต่ให้ตั้งค่าชื่อผู้ใช้และอีเมลส่วนกลางของ Github แทน! (ฉันพยายามที่จะผลักดันไปยังพื้นที่เก็บข้อมูลส่วนตัว

git config --global user.email "your_github_email_@email.com"

git config --global user.name "Your full name"

ใช้งานไม่ได้สำหรับฉัน ตั้งค่าการกำหนดค่าแล้วให้ใช้github.com .. โดยที่ไม่มี '@' อยู่
ses


1

ฉันมีปัญหานี้ในตอนนี้และมันกลับกลายเป็นว่าไฟล์เซิร์ฟเวอร์ /etc/resolver.conf ของฉันมีที่อยู่ IP ไม่ถูกต้อง อาจช่วยคนอื่นได้


1

สิ่งนี้เกิดขึ้นกับฉันเพราะเพื่อนร่วมงานของฉันปิดการใช้งานที่เก็บโดยไม่ตั้งใจซึ่งพื้นที่เก็บข้อมูลนี้แยกจากกัน อาจตรวจสอบเพื่อให้แน่ใจว่า repo git (ฮับ) ดั้งเดิมยังคงมีอยู่จริง


1

อาจเป็นปัญหาการบัญชี บัญชี Github ของเจ้าของ repo ต้นน้ำ (ส่วนตัว) อาจไม่ใช่การเงิน ฉันเคยเห็นสิ่งนี้แล้วที่บัตรเครดิตของลูกค้าหมดอายุ


1

สิ่งที่ใช้ได้ผลสำหรับฉันกำลังเปลี่ยนจาก http เป็น ssh:

git remote rm origin
git remote add origin git@github.com:username/repoName.git

จากนั้นตรวจสอบด้วย git remote -v


1

ฉันมีปัญหาเดียวกัน กรณีของฉันคือ: ฉันเริ่มต้น repo git ภายในก่อนที่ฉันจะสร้างมันบน gitub จากนั้นฉันพยายามที่จะเพิ่มสาขาระยะไกล ฉันแก้ไขปัญหาของฉันโดยเปลี่ยนลำดับของการดำเนินการ: สร้าง repo บนไซต์ Github จากนั้นเริ่มแก้ไขภายในเครื่อง แต่ไม่ใช่กรณีที่พวกเขาชอบทำทุกอย่างจาก command line เหมือนฉัน

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