ร้ายแรง: 'ต้นกำเนิด' ดูเหมือนจะไม่เป็นที่เก็บ git


101

ฉันมีที่เก็บmoodleในบัญชี Github ของฉันซึ่งฉันforkedมาจากที่เก็บอย่างเป็นทางการ

จากนั้นฉันก็ทำการโคลนบนเครื่องในพื้นที่ของฉัน มันทำงานได้ดี ฉันสร้างหลายสาขา (ภายใต้masterสาขา) ฉันทำผิดหลายครั้งและทำงานได้ดี

ฉันไม่รู้ว่าฉันได้รับข้อผิดพลาดต่อไปนี้อย่างไรเมื่อฉันทำ: git push origin master

fatal: 'origin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

ฉันจะแก้ไขข้อผิดพลาดโดยไม่ส่งผลกระทบต่อที่เก็บของฉันบน Github ได้อย่างไร

ฉันกำลังใช้ Ubuntu 12.10

เนื้อหา.git/configหลังทำของฉันcat $(git rev-parse --show-toplevel)/.git/configให้:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[branch "master"]
[branch "MOODLE_23_STABLE"]
[branch "MOODLE_24_STABLE"]
[remote "upstream"]
    url = git://git.moodle.org/moodle.git
    fetch = +refs/heads/*:refs/remotes/upstream/*

กรุณาพิมพ์เนื้อหาของ. git / config และเพิ่มที่นี่
pmod

@pmod: โปรดดูคำถามที่อัปเดตของฉัน
xan

โฟลเดอร์ที่คุณโคลนบนเครื่องโลคัลควรมีโฟลเดอร์. git
pmod

@xancat $(git rev-parse --show-toplevel)/.git/config
bereal

@pmod: ใช่ฉันเจอแล้ว โปรดดูคำถามที่อัปเดตของฉัน
xan

คำตอบ:


122

$HOME/.gitconfigคือการกำหนดค่าส่วนกลางสำหรับคอมไพล์
มีสามระดับของconfig ไฟล์

 cat $(git rev-parse --show-toplevel)/.git/config

(ที่กล่าวถึงโดยbereal ) คือการกำหนดค่าในเครื่องของคุณในเครื่องของ repo ที่คุณโคลน

คุณยังสามารถพิมพ์จากภายใน repo ของคุณ:

git remote -v

และดูว่ามีรีโมตที่ชื่อ 'origin' อยู่ในรายการหรือไม่

ไม่เช่นนั้นหากรีโมตนั้น (ซึ่งสร้างขึ้นโดยค่าเริ่มต้นเมื่อโคลน repo) หายไปคุณสามารถเพิ่มได้อีกครั้ง

git remote add origin url/to/your/fork

OP กล่าวถึง:

การทำgit remote -vช่วยให้:

upstream git://git.moodle.org/moodle.git (fetch) 
upstream git://git.moodle.org/moodle.git (push)

ดังนั้น ' origin' จึงหายไป: การอ้างอิงถึงทางแยกของคุณ
ดู " อะไรคือความแตกต่างระหว่างoriginและupstreamใน github "

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


ทำgit remote -vให้: upstream git://git.moodle.org/moodle.git (fetch) upstream git://git.moodle.org/moodle.git (push)
Xan

@xan 'ต้นน้ำ "คือ repo ที่คุณได้แยกคุณไม่มีจุดเริ่มต้นซึ่งเป็นทางแยกของคุณบน github ดูstackoverflow.com/a/15632224/6309และstackoverflow.com/a/9257901/6309
VonC

ฉันจะเปลี่ยนส้อมเป็นหลักได้อย่างไร
Wolfpack'08

@ Wolfpack'08 "fork" หมายถึงที่เก็บ (ที่มีหลายสาขา) เปลี่ยนเป็นสาขาคือการดำเนินการในท้องถิ่นที่เกี่ยวข้องกับสวิทช์คอมไพล์: stackoverflow.com/a/57066202/6309 ในคำพูดของคุณเอง "การเปลี่ยนส้อมเป็นหลัก" หมายถึงอะไรสำหรับคุณ การเปลี่ยนสาขาในพื้นที่ของคุณในที่เก็บโคลนในพื้นที่ของคุณ (ของ GitHub fork ระยะไกลของคุณ)?
VonC

1
ถ้าคุณเป็นเจ้าของ GHY repo git push -u ghy masterระยะไกลเพียงแค่กดไป:
VonC

22

ฉันประสบปัญหาเดียวกันเมื่อฉันเปลี่ยนชื่อที่เก็บของฉันบน GitHub ฉันพยายามผลักดันที่จุดที่ฉันได้รับข้อผิดพลาด

fatal: 'origin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

ฉันต้องเปลี่ยน URL โดยใช้

git remote set-url origin ssh://git@github.com/username/newRepoName.git

หลังจากนี้คำสั่งทั้งหมดก็เริ่มทำงานได้ดี คุณสามารถตรวจสอบการเปลี่ยนแปลงได้โดยใช้

git remote -v

ในกรณีของฉันหลังจากการเปลี่ยนแปลงสำเร็จแสดงว่ามีการเปลี่ยนชื่อที่ถูกต้องใน URL

[aniket@alok Android]$ git remote -v
origin  ssh://git@github.com/aniket91/TicTacToe.git (fetch)
origin  ssh://git@github.com/aniket91/TicTacToe.git (push)

15

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

git pull origin master

สำหรับฉันการโทรธรรมดานั้นช่วยแก้ไขข้อความแสดงข้อผิดพลาดเหล่านั้น:

  • ร้ายแรง: 'master' ดูเหมือนจะไม่ใช่ที่เก็บ git
  • ร้ายแรง: ไม่สามารถอ่านจากที่เก็บระยะไกล

3

ลองสร้างจุดเริ่มต้นระยะไกลก่อนอาจหายไปเนื่องจากคุณเปลี่ยนชื่อของ repo ระยะไกล

git เพิ่มต้นทางจากระยะไกล URL_TO_YOUR_REPO


2

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

ฉันมี git repo ในไดรฟ์เครือข่าย เรียกเครือข่ายนี้ว่า RAID ฉันโคลน repo นี้บนเครื่องในพื้นที่ของฉัน (LOCAL) และบนคลัสเตอร์หมายเลขของฉัน (CRUNCHER) เพื่อความสะดวกฉันติดตั้งไดเรกทอรีผู้ใช้ของบัญชีของฉันบน CRUNCHER บนเครื่องท้องถิ่นของฉัน ดังนั้นฉันสามารถจัดการไฟล์บน CRUNCHER ได้โดยไม่จำเป็นต้องทำงานในเทอร์มินัล SSH

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

เหตุผลก็คือฉันโทรpushจากภายใน repo บน CRUNCHER ใน LOCAL ดังนั้นเส้นทางทั้งหมดในไฟล์กำหนดค่าจึงไม่ถูกต้อง

เมื่อฉันตระหนักถึงความผิดของฉันฉันเข้าสู่ CRUNCHER ผ่าน Terminal และสามารถส่งคอมมิตได้

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


1

ฉันมีข้อผิดพลาดเดียวกันในชื่อgit pull origin branchnameเมื่อตั้งค่า remote origin เป็น path fsและไม่ใช่sshใน. git / config :

fatal: '/path/to/repo.git' does not appear to be a git repository 
fatal: The remote end hung up unexpectedly

มันเป็นเช่นนั้น (ใช้ได้เฉพาะกับผู้ใช้บนเซิร์ฟเวอร์gitเดียวกันที่สามารถเข้าถึง git ได้):

url = file:///path/to/repo.git/

แก้ไขเป็นเช่นนี้ (ใช้ได้กับผู้ใช้ทุกคนที่สามารถเข้าถึงgit user (ssh authorizes_keys หรือ password)):

url = git@domain.com:path/to/repo.git

เหตุผลที่ฉันใช้เป็นเส้นทางไดเรกทอรีเพราะไฟล์gitอยู่บนเซิร์ฟเวอร์เดียวกัน


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