ร้ายแรง: ต้นแบบของสาขาปัจจุบันไม่มีสาขาต้นน้ำ


227

ฉันพยายามผลักดันโครงการใดโครงการหนึ่งของฉันไปที่ gitub และฉันได้รับข้อผิดพลาดนี้:

peeplesoft@jane3:~/846156 (master) $ git push

fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use

     git push --set-upstream origin master

ดังนั้นฉันจึงลองและได้รับสิ่งนี้:

peeplesoft@jane3:~/846156 (master) $ git push --set-upstream origin master

fatal: Authentication failed

เธรด stackoverflow อื่นแนะนำให้ฉันลองทำสิ่งต่อไปนี้พร้อมกับผลลัพธ์ที่น่าผิดหวัง

peeplesoft@jane3:~/846156 (master) $ git push -u origin master

fatal: Authentication failed

จากนั้นฉันลองทำสิ่งนี้:

peeplesoft@jane3:~/846156 (master) $ git config remote.origin.push HEAD

peeplesoft@jane3:~/846156 (master) $ git push

fatal: Authentication failed

คำใบ้ใด ๆ


1
repo จะต้องมีอยู่ที่ github ก่อนที่คุณจะสามารถผลักดันมันได้ ทำมัน? และธุรกรรมซื้อคืนที่คุณทำงานกับโคลนของมันคืออะไร?
matt

ฉันโคลน repo จาก Github จากนั้นเพิ่ม 1 บรรทัดไปยังไฟล์ readme แล้วลองผลักมันกลับ
user1524361

1
ผมได้รับข้อผิดพลาดเดียวกันเพราะฉันลืมที่จะกระทำไฟล์
Mateen

3
-u และ --set-upstream เหมือนกัน
brainLoop

อยากให้ทุกคนรู้ว่าgitคำสั่งที่โพสต์นั้นช่วยฉันได้มากกว่าคำตอบ
นาธาน

คำตอบ:


94

คุณแก้ไขการพุช แต่เป็นอิสระจากปัญหาการกดนั้น (ซึ่งฉันอธิบายไว้ใน " ทำไมฉันต้องดันสาขาใหม่อย่างชัดเจน ": git push -u origin masterหรือgit push -u origin --all) ตอนนี้คุณต้องแก้ไขปัญหาการตรวจสอบสิทธิ์

ขึ้นอยู่กับ URL ของคุณ (ssh เหมือนใน ' git@github.com/yourRepoหรือ https เหมือนในhttps://github.com/You/YourRepo)

สำหรับ https url:

หากบัญชีของคุณได้รับการคุ้มครองโดยตรวจสอบสองปัจจัยรหัสผ่านปกติของคุณจะไม่ทำงาน (สำหรับ https URL) ตามที่อธิบายไว้ที่นี่ หรือที่นี่

ปัญหาเดียวกันหากรหัสผ่านของคุณมีอักขระพิเศษ (ดังในคำตอบนี้ )

หาก https ไม่ทำงาน (เพราะคุณไม่ต้องการที่จะสร้างคีย์มัธยม PAT: ส่วนบุคคลการเข้าถึง Token) แล้วคุณสามารถสลับไปยัง SSH, เป็นฉันได้แสดงที่นี่


ตามที่บันทึกไว้โดยqwertyในความคิดเห็นคุณสามารถสร้างสาขาที่มีชื่อเดียวกันบนรีโมตได้โดยอัตโนมัติด้วย:

git push -u origin head 

ทำไม?

  • HEAD (ดูของคุณ.git\HEADไฟล์) มี refspec ของการตรวจสอบในขณะนี้จากสาขา (ตัวอย่างเช่น: ref: refs/heads/master)
  • นโยบายการพุชเริ่มต้นนั้นง่าย

เนื่องจาก refpec ที่ใช้สำหรับการพุชนี้คือเฮด: (ไม่มีปลายทาง), วิธีที่ขาดหายไป:<dst>ในการอัปเดตการอ้างอิงเดียวกันกับ<src>(เฮดซึ่งเป็นสาขา)

ที่จะไม่ทำงานถ้าหัวแฝดแม้ว่า


1
น่ากลัวนี่คือสิ่งที่เราต้องการในการแก้ไขปัญหาสาเหตุที่แท้จริงไม่ใช่แค่แก้ไขบนพื้นผิว
workplaylifecycle

ถ้าคุณอยู่ในสาขาใด ๆ git push origin head -uนี้จะเป็นประโยชน์ สร้างสาขาที่มีชื่อเดียวกันบนรีโมตโดยอัตโนมัติ
Qwerty

1
@Qwerty ขอบคุณจุดดี ฉันได้รวมความคิดเห็นของคุณ (พร้อมรายละเอียดเพิ่มเติม) ไว้ในคำตอบเพื่อให้เห็นได้ชัดเจน
VonC

115

นอกจากนี้คุณสามารถใช้คำสั่งต่อไปนี้:

git push -u origin master

สิ่งนี้จะสร้าง (-u) สาขาอื่นใน repo ระยะไกลของคุณ เมื่อการตรวจสอบโดยใช้ ssh เสร็จแล้วนั่นคือ


2
สิ่งนี้เกี่ยวข้องกับปัญหาจริง ๆ เนื่องจากมีปัญหาเกี่ยวกับการรับรองความถูกต้อง เขายังระบุด้วยว่าเขาได้ลองในโพสต์ของเขาแล้ว
Mike Precup

2
ฉันลงคะแนนด้วย 2 เหตุผล ที่หนึ่ง: OP ระบุว่าเขาได้ลองสิ่งนี้แล้ว อันที่สอง: -uตัวเลือกเป็นทางลัดสำหรับ--set-upstreamตัวเลือกที่ไม่มีส่วนเกี่ยวข้องกับการสร้างสาขาใหม่ จากเอกสารของ-uหรือ--set-upstreamตัวเลือก : "สำหรับทุกสาขาที่เป็นข้อมูลล่าสุดหรือถูกผลักสำเร็จให้เพิ่มการอ้างอิง upstream (การติดตาม) ที่ใช้โดยอาร์กิวเมนต์น้อย git-pull [1] และคำสั่งอื่น ๆ " อันที่จริงฉันไม่เข้าใจว่าทำไมคำตอบนี้จึงได้รับการยกระดับขึ้นมากเพราะมันทำให้เข้าใจผิด
louisfischer

38

เห็นได้ชัดว่าคุณยังได้รับข้อความแสดงข้อผิดพลาดนี้เมื่อคุณลืม--allพารามิเตอร์เมื่อกดครั้งแรก ฉันเขียน

git push -u origin

ซึ่งทำให้เกิดข้อผิดพลาดนี้มันควรจะเป็น

git push -u origin --all

โอ้ฉันรักข้อผิดพลาดในการคัดลอกวาง ...


3
ขอบคุณ ฉันได้รับข้อผิดพลาดนี้ใน Visual Studio Code และใช้งานได้ แต่ในบริบทของนักพัฒนาหลายคนสามารถอธิบายสิ่งนี้ได้อย่างไร
Hell.Bent


13

โปรดลองสถานการณ์นี้

git push -f --set-upstream origin master

7
คุณควรให้คำอธิบายเพิ่มเติมเกี่ยวกับวิธีการและสาเหตุของการทำงาน
Benoît Latinier

6
"ไม่เลว" เป็นคำอธิบายที่ไม่ดีสำหรับทุกสิ่ง "ไม่เลว" ทำให้คำตอบของคุณไม่ดีจริงๆ
GhostCat

สิ่งนี้ไม่ทำสิ่งใดเพื่อแก้ไขข้อผิดพลาดที่ OP กล่าวถึง: "การรับรองความถูกต้องล้มเหลว"
Sean the Bean

ใช่. มันใช้งานได้สำหรับฉัน ฉันคิดว่านี่เป็นการบังคับให้ส่งข้อมูลไปยังสาขา upstream (remote)
vkg

12

หากคุณกำหนดการกระทำที่git pushควรทำหากไม่มีการกำหนด refspec ในบรรทัดคำสั่งจะไม่มีการกำหนดค่า refspec ในระยะไกลและไม่มีการอ้างอิงโดยนัยจากตัวเลือกใด ๆ ที่ให้ไว้ในบรรทัดคำสั่ง

แค่ทำมัน:

git config --global push.default current

แล้วก็

git push

1
คุณต้องระวังว่านี่เป็นการเปลี่ยนแปลงการตั้งค่า git ทั่วโลกของคุณซึ่งอาจมีผลข้างเคียง แต่นี่คือสิ่งที่ฉันกำลังมองหา
Mavamaarten

@Mavamaarten ผลข้างเคียงที่อาจเกิดขึ้นคืออะไร?
kosii

7

ดีฉันมีปัญหาเดียวกันในขณะที่อัพโหลดและฉันแก้ไขมันด้วยการทำสิ่งเดียวกันกับที่บอกว่าทำ: ก่อนหน้านี้ฉันพยายามที่จะผลักดันเทอร์มินัลไปยังที่เก็บของฉันใน linux โดย https like

git push https://github.com/SiddharthChoudhary/ClientServerCloudComputing.git

แต่ไม่ได้ผลลัพธ์ใด ๆ และด้วยเหตุนี้ฉันจึงลงลึกและลอง:

git push --set-upstream https://github.com/SiddharthChoudhary/ClientServerCloudComputing.git master

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

  1. ในการสร้างโทเค็นให้ไปที่บัญชี Github และในการตั้งค่านักพัฒนาแล้วสร้างโทเค็นอื่น
  2. หลังจากได้รับแล้วให้คัดลอกโทเค็นนั้นและวางในพรอมต์รหัสผ่านเมื่อถูกถาม

6

ในด้านที่ง่ายมากเมื่อคุณมีสาขาอื่นคุณจะไม่สามารถใช้เพื่อผลักสาขาได้

git push

แต่คุณต้องระบุสาขาในตอนนี้แม้ว่าคุณจะทำการเช็คเอาต์สาขาที่คุณต้องการจะกด

git push origin <feature_branch>

สามารถเป็นได้แม้masterสาขา


5

ฉันทำผิดพลาดง่าย ๆ ของการลืมที่จะกระทำ:

git commit -m "first commit"

git push origin masterทำงานแล้ว


4

ผมมีปัญหาเหมือนกัน

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

ฉันแก้ไขมันที่ใช้คำสั่งด้านล่าง

$ git branch --set-upstream develop origin/develop

และจะเพิ่มการกำหนดค่าในไฟล์กำหนดค่าในโฟลเดอร์. git

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


3

ใช้ครั้งแรกgit pull origin your_branch_name แล้วuse git push origin your_branch_name


ขออภัยถ้ามันฟังดูไร้สาระ จะรู้จักชื่อสาขาของฉันได้อย่างไร repo ของฉันอยู่ใน AWS
Pravinraj Venkatachalam

ใช้ "สาขา git"
Darius Miliauskas

3

มีวิธีแก้ปัญหาง่ายๆซึ่งทำงานกับฉันใน macOS Sierra ฉันทำทั้งสองคำสั่ง:

git pull --rebase git_url(Ex: https://github.com/username/reponame.git)
git push origin master

หากพบข้อผิดพลาดร้ายแรงเกี่ยวกับอัปสตรีมหลังจากการกดใด ๆ ในอนาคตให้รัน:

git push --set-upstream origin master

0

1.คอมพิวเตอร์และ GitHub ของคุณเชื่อมโยง ใช้ SSH รหัสคอมพิวเตอร์ดังนั้นคุณไม่จำเป็นต้องส่งยืนยันคำอธิบายภาพที่นี่

2.คอมไพล์ไม่สามารถจัดการโฟลเดอร์ว่างได้ ดังนั้นคุณต้องเขียนไฟล์ readme.md ที่บันทึกในไฟล์ มิฉะนั้นคุณจะไม่พบไฟล์

3.โครงการในพื้นที่ของคุณไม่มีโครงการใหม่ ๆ กรุณา

git init

git remote add origin +"githublink"

git add .

git commit -m "" ไปอีกครั้ง.

4.จากนั้นgit pull origin master(กุญแจ)

5.ในที่สุดgit push origin master(แก้ปัญหาทั้งหมด)

http://my.oschina.net/psuyun/blog/123005参考链接


0

หากคุณพยายามที่จะผลักดันรหัสของคุณโดยตรงไปยังสาขาหลักแล้วใช้คำสั่ง

git push origin master

มันช่วยฉัน


0

ฉันยังได้รับข้อผิดพลาดเดียวกันฉันคิดว่ามันเป็นเพราะฉันโคลนมันและพยายามผลักกลับ $ git push -u origin master นี่คือคำสั่งที่ถูกต้องลองดูสิ

การนับวัตถุ: 8 เสร็จแล้ว การบีบอัดเดลต้าใช้มากถึง 2 เธรด บีบอัดออบเจ็กต์: เสร็จแล้ว 100% (4/4) การเขียนวัตถุ: 100% (8/8), 691 bytes | 46.00 KiB / s เสร็จแล้ว รวม 8 (เดลต้า 1) รีโมต 0 (เดลต้า 0) ซ้ำ: การแก้ไขเดลตา: 100% (1/1) เสร็จแล้ว

  • [สาขาใหม่] หลัก -> ต้นแบบสาขาหลักตั้งค่าเพื่อติดตามต้นแบบสาขาระยะไกลจากแหล่งกำเนิด

    It was successful. Try to create new u branch 
    

0

ฉันมีปัญหาเดียวกันสาเหตุคือฉันลืมระบุสาขา

git push myorigin feature/23082018_my-feature_eb

0

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

คุณสามารถยืนยันโดยตรงผ่าน


1
"ยืนยันโดยตรงผ่านทาง" คืออะไร
Mike Poole

0

สำหรับฉันมันเป็นเพราะฉันได้ลบ. git ที่ซ่อนอยู่โฟลเดอร์

ฉันแก้ไขโดยการลบโฟลเดอร์การโคลนซ้ำอีกครั้งและทำการเปลี่ยนแปลงอีกครั้ง


0

หากคุณอยู่ในสาขาใด ๆ คุณสามารถใช้สิ่งนี้:

git push origin head -u

สิ่งนี้จะสร้างสาขาใหม่ที่มีชื่อเดียวกันบนรีโมตโดยอัตโนมัติ


-1

เพื่อแก้ไขปัญหานี้ในขณะที่ตรวจสอบรหัสจากgitตัวเองคุณต้องให้คำสั่งดังต่อไปนี้:

git checkout -b branchname origin/branchname

ตามค่าเริ่มต้นเราตั้งค่าthe upstream branchไว้ดังนั้นคุณจะไม่ต้องเผชิญกับปัญหาดังกล่าว


-2

สำหรับฉันปัญหามาจากชื่อสาขาของฉัน: "# name-of-my-branch" โดยไม่มี "#" มันใช้ได้ดี!

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