Git push: "จุดกำเนิด" ที่ร้ายแรงดูเหมือนจะไม่ใช่ที่เก็บ git - ร้ายแรงไม่สามารถอ่านจากที่เก็บระยะไกลได้ "


119

ฉันรู้ว่ามีการถามคำถามที่คล้ายกันนี้แล้ว

แต่ฉันเชื่อว่าปัญหาของฉันเกิดจากความผิดพลาดที่ฉันได้ทำไปก่อนหน้านี้ดังนั้นจึงแตกต่างออกไปให้ฉันอธิบาย

ทุกอย่างทำงานได้อย่างราบรื่นอย่างที่ฉันทำได้:

  • git add . ไฟล์ทั้งหมดจากที่เก็บในเครื่องของฉัน
  • git commit -m "message here" เพื่อเพิ่มข้อความในการกระทำของฉัน
  • git push origin master เพื่ออัปโหลดไฟล์ของฉันไปยัง GitHub
  • git push heroku master เพื่ออัปโหลดไฟล์ของฉันไปยัง Heroku

อย่างไรก็ตามในบางจุดฉันได้สร้างสาขาใหม่ที่เรียกว่าในพื้นที่add-calendar-modelในกรณีที่ขั้นตอนต่อไปของการพัฒนาแอปจะไปทางทิศใต้ ...

... ซึ่งเป็นสิ่งที่เกิดขึ้น

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

ดังนั้นฉันจึงตัดสินใจลบไฟล์ทั้งหมดด้วยตนเองจากที่เก็บในเครื่องและสาขาgit cloneของฉันmasterจาก GitHub

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

ทุกครั้งที่ฉันพยายามเรียกใช้git push origin add-calendar-modelหรือgit push origin masterฉันได้รับข้อผิดพลาดต่อไปนี้:

fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

ฉันไม่ค่อยสบายใจกับ Git และ GitHub อย่างที่คุณอาจเดาได้ในตอนนี้และฉันต้องยอมรับว่าฉันไม่รู้ว่าจะแก้ไขอย่างไร

ความคิดใด ๆ ?


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

คำตอบ:


218

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

git remote -v

สิ่งนี้จะแสดงรีโมทพุช / ดึงข้อมูลทั้งหมดสำหรับโปรเจ็กต์

หากสิ่งนี้ส่งกลับโดยไม่มีเอาต์พุตให้ข้ามไปยังบล็อกโค้ดสุดท้าย

ตรวจสอบชื่อ / ที่อยู่ระยะไกล

หากสิ่งนี้ส่งคืนแสดงว่าคุณได้ตั้งค่ารีโมตไว้ให้ตรวจสอบว่าชื่อของรีโมตตรงกับรีโมตที่คุณใช้ในคำสั่งของคุณ

$git remote -v
myOrigin ssh://git@example.com:1234/myRepo.git (fetch)
myOrigin ssh://git@example.com:1234/myRepo.git (push)

# this will fail because `origin` is not set
$git push origin master

# you need to use
$git push myOrigin master

หากคุณต้องการเปลี่ยนชื่อรีโมตหรือเปลี่ยน URL ของรีโมตคุณจะต้องลบรีโมตเก่าออกก่อนจากนั้นจึงเพิ่มรีโมตที่ถูกต้อง

ถอดรีโมทเก่าออก

$git remote remove myOrigin

เพิ่มรีโมทที่หายไป

จากนั้นคุณสามารถเพิ่มรีโมทที่เหมาะสมโดยใช้

$git remote add origin ssh://git@example.com:1234/myRepo.git

# this will now work as expected
$git push origin master

มันได้ผลสำหรับฉันโดยไม่ต้องssh://อยู่ตรงหน้าgit@example.com:1234/myRepo.git
Carol-Theodor Pelu

ฉันกำลังอ่านคำถามนี้หากคุณสามารถช่วยข้อผิดพลาดในการพุชที่เก็บข้อมูลใหม่ได้หรือไม่?
StaticVariable

12

ดังที่ Matt Clark ระบุไว้ข้างต้น

อย่างไรก็ตามอาจไม่ได้ตั้งค่าต้นทางดังนั้นให้ข้ามขั้นตอนการลบและเพียงแค่พยายามเพิ่มก็สามารถล้างสิ่งนี้ได้

git remote add origin <"clone">

โดยที่ "โคลน" จะเข้าไปในที่เก็บ GitHub ของคุณและคัดลอก "URL โคลน HTTPS" และวางลงใน GitBash


3

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

  ~Wrong url for git@bitbucket
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = gitbucket.org:Prezyack/project-one-hello.git
    fetch = +refs/heads/*:refs/remotes/origin/*

 ~Wrong URL for SSH...
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = https://emmap1@bitbucket.org/emmap1/bitbucketspacestation.git
[branch "master"]
    remote = origin
    merge = refs/heads/master

เรากำลังดู URL ... เช่น: สำหรับ bitbucket คาดว่า git@bitbucket.org .... หากเป็น gitbucket.org ทำการเปลี่ยนแปลงที่จำเป็น .. บันทึกลองกดอีกครั้ง


2

มันใช้ได้กับฉัน

git remote add origin https://github.com/repo.git
git push origin master

เพิ่ม URL ที่เก็บไปยังต้นทางในไดเร็กทอรีการทำงานภายใน


0

ข้อผิดพลาดที่คล้ายกันปรากฏขึ้นขณะดึงการเปลี่ยนแปลงจากต้นทาง หากคุณกำลังลองใน Intellij จากตัวเลือกเมนูการดึงอาจไม่ทำงานโดยตรง

ไปที่เทอร์มินัลและพิมพ์คำสั่งนี้และสิ่งนี้ควรได้ผล: git pull origin master


0

ฉันมีปัญหาเดียวกัน เมื่อฉันตรวจสอบไฟล์กำหนดค่าของฉันฉันสังเกตเห็นว่า 'fetch = + refs / head / : refs / remotes / origin / ' อยู่ในบรรทัดเดียวกับ 'url = Z: /GIT/REPOS/SEL.git' ดังที่แสดง:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
[remote "origin"]
    url = Z:/GIT/REPOS/SEL.git     fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[gui]
    wmstate = normal
    geometry = 1109x563+32+32 216 255

ตอนแรกฉันไม่คิดว่าสิ่งนี้จะมีความสำคัญ แต่หลังจากเห็นโพสต์ของ Magere ฉันก็ย้ายบรรทัดและแก้ไขปัญหาได้:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
[remote "origin"]
    url = Z:/GIT/REPOS/SEL.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[gui]
    wmstate = normal
    geometry = 1109x563+32+32 216 255

0

หากคุณเพิ่มที่เก็บระยะไกลโดยใช้ git clone ให้ทำตามขั้นตอน: -

git clone <repo_url> แล้ว

git init

git add * * หมายถึงเพิ่มไฟล์ทั้งหมด

git commit -m 'your commit'

git remote -vเพื่อตรวจสอบการเรียกใช้สาขาใด ๆ หรือไม่หากไม่มีสิ่งใดแสดงขึ้นเราจึงเพิ่มหรือดึงที่เก็บ " ดึงข้อมูลก่อน" . คุณต้องวิ่ง git pull origin <branch>หรือgit pull -r origin <branch>ก่อนการกดครั้งต่อไปผลักดันต่อไป

แล้ว

git remote add origin <git url>
 git pull -r origin master
git push -u origin master```

0

นี่เป็นวิธีที่ฉันอัปเดตสาขาหลัก

$ git remote -v
$ git remote rm origin
$ git commit -m "your commit"
$ git remote add origin https://github.com/user/repo.git
$ git push -f origin master

1
ลองเพิ่มคำอธิบายในคำตอบของคุณด้วยวิธีที่ตอบคำถามและพยายามช่วยให้ผู้อ่านเข้าใจ ปัจจุบันมันอ่านเหมือนเกร็ดเล็กเกร็ดน้อยและไม่สามารถใช้งานได้ในกรณีทั่วไป (เช่นhttps://github.com/รูทเว็บไซต์และ git repo)
Kache

-3

บางครั้งคุณไม่มี REF ในพื้นที่เพื่อผลักดันสาขานั้นกลับไปยังต้นทาง
ลอง

git push origin master:master

สิ่งนี้ระบุอย่างชัดเจนว่าจะส่งไปยังสาขาใด (และจาก)

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