Github“ ร้ายแรง: แหล่งกำเนิดระยะไกลมีอยู่แล้ว”


465

ฉันพยายามติดตามการเรียนการสอนของ Michael Hartl's Railsแต่ฉันพบข้อผิดพลาด

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

Parkers-MacBook-Pro:.ssh ppreyer$ git remote add origin git@github.com:ppreyer/first_app.git
fatal: remote origin already exists.

เพิ่งสงสัยว่ามีใครประสบปัญหานี้หรือไม่


หากคุณยังสร้างที่เก็บ git อยู่ให้ดูที่.git/configไฟล์เพื่อดูว่ายังไม่ได้ประกาศแหล่งกำเนิด
Denys Séguret

3
ฉันกำลังเผชิญปัญหาเดียวกันและใช้คำสั่ง "ต้นกำเนิดระยะไกล rit git" แล้วใช้คำสั่ง git ระยะไกลเพิ่มแหล่งกำเนิด URL
Akhzar Nazir

@AkhzarNazir โปรดเพิ่มนี่เป็นคำตอบ มันใช้งานได้สำหรับฉัน
Pamela Sillah

คำตอบ:


895

TL; DR คุณควรอัพเดตรีโมตที่มีอยู่:

$ git remote set-url origin git@github.com:ppreyer/first_app.git

รุ่นยาว:

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

หากต้องการเพิ่มรีโมตใหม่ที่เรียกว่าตัวอย่างgithubแทนorigin(ซึ่งมีอยู่แล้วในระบบของคุณ) ให้ทำดังนี้:

$ git remote add github git@github.com:ppreyer/first_app.git

จำไว้ว่าทุกที่ในการกวดวิชาที่คุณเห็น"ต้นกำเนิด"คุณควรแทนที่ด้วย"GitHub" ยกตัวอย่างเช่นในขณะนี้ควรจะเป็น$ git push origin master$ git push github master

แต่ถ้าคุณต้องการที่จะดูว่าอะไรที่มีอยู่แล้วคือคุณสามารถทำorigin $ git remote -vหากคุณคิดว่ามีข้อผิดพลาดเกิดขึ้นคุณสามารถอัปเดตได้เช่น:

$ git remote set-url origin git@github.com:ppreyer/first_app.git

5
ทำไมถึงมีต้นกำเนิดอยู่ในที่เก็บใหม่ของเขา? เขาควรแก้ไขปัญหา (ให้แน่ใจว่าแหล่งกำเนิดตัวอย่างคือนามแฝงที่ถูกต้องใน GitHub) แทนที่จะสร้างนามแฝงใหม่ที่เขาจะต้องเตือน
Denys Séguret

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

สิ่งที่ไม่git remote -vเอาท์พุท? นอกจากนี้คุณสามารถลองgit push origin master?
Agis

16
git remote rm originไม่ได้ผล มันสร้างข้อผิดพลาด: ไม่สามารถลบส่วนการตั้งค่า 'remote.origin'
Andrew Savinykh

20
@zespri: ใช้งานgit remote set-url --add origin git@github.com/username/repo.git
eduncan911

342

ในระยะสั้น

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

ทำงานแล้ว!

ไชโย!


มีใครอธิบายได้บ้าง คอมไพล์ rm ระยะไกล
Kick Buttowski

1
@KickButtowski rm อ้างอิงถึงคำสั่ง remove ที่ใช้ใน * nix ดังนั้นคำสั่งนี้จะบอกคอมไพล์ให้ "ลบ" รายละเอียดเซิร์ฟเวอร์ระยะไกลชื่อ "ต้นกำเนิด"
rob

ไม่จำเป็นต้องทำใน 2 ขั้นตอนเมื่อคุณสามารถทำได้ใน 1 ดูคำตอบของฉัน
Agis

37

สำหรับผู้ที่คุณพบข้อผิดพลาดทั่วไป "ร้ายแรง: แหล่งกำเนิดระยะไกลอยู่แล้ว" หรือเมื่อพยายามลบแหล่งกำเนิดและคุณได้รับ "ข้อผิดพลาด: ไม่สามารถลบส่วนกำหนดค่า remote.origin" สิ่งที่คุณต้องทำคือ ตั้งค่าจุดเริ่มต้นด้วยตนเอง

POSH ~ Git ของ Windows สำหรับ Windows PowerShell (และแอป GitHub สำหรับ Windows) มีปัญหากับสิ่งนี้

ฉันวิ่งเข้าไปหาสิ่งนี้เหมือนที่ฉันทำบ่อย ๆ อีกครั้งเมื่อตั้งค่า octopress ของฉัน ดังนั้นนี่คือวิธีที่ฉันได้ทำงาน

ก่อนอื่นให้ตรวจสอบรีโมทของคุณ:

C:\gd\code\octopress [source +2 ~3 -0 !]> git remote -v
octopress       https://github.com/imathis/octopress.git (fetch)
octopress       https://github.com/imathis/octopress.git (push)
origin

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

ดังนั้นเปลี่ยน URL ด้วยตนเอง:

git remote set-url --add origin https://github.com/eduncan911/eduncan911.github.io.git

จากนั้นคุณสามารถยืนยันได้ว่าทำงานได้โดยทำงานgit remote -vอีกครั้ง:

C:\gd\code\octopress [source +2 ~3 -0 !]> git remote -v
octopress       https://github.com/imathis/octopress.git (fetch)
octopress       https://github.com/imathis/octopress.git (push)
origin  https://github.com/eduncan911/eduncan911.github.io.git (fetch)
origin  https://github.com/eduncan911/eduncan911.github.io.git (push)

สิ่งนี้ได้แก้ไข repos git หลายสิบรายการที่ฉันเคยมีปัญหา GitHub, BitBucket GitLab ฯลฯ


2
สิ่งนี้ใช้ได้สำหรับฉัน ขอบคุณ @ eduncan911 สถานะคำสั่ง github เพื่อทำ "git init" เพื่อสร้างที่เก็บใหม่บนบรรทัดคำสั่ง สิ่งนี้จะสร้างรีโมตต้นทางโดยไม่มี URL ที่ใช้อินเตอร์เฟส PS นั้น
mikekidder

Ah yah, นั่นเป็น gotcha อีกอันและทำไมคุณต้องทำสิ่งนี้ +1 บางทีเราควรรายงานเรื่องนี้ให้ POSH Git บน gitHub
eduncan911

ฉันจะค้นหา URL เมื่อใช้ gitlab ได้อย่างไร
Madmenyo

1
@MennoGouw ฉันคิดว่านั่นเป็นคำถามนอกหัวข้อ; แต่โดยปกติจะอยู่บนแดชบอร์ด / บ้านของ Repo มันยังอยู่ในการตั้งค่าสำหรับโครงการเช่นกัน
eduncan911

36

คุณสามารถดูที่เก็บข้อมูลระยะไกลที่คุณได้กำหนดค่าให้เชื่อมต่อผ่าน

git remote -v

ที่จะส่งคืนรายการในรูปแบบนี้:

origin  git@github.com:github/git-reference.git (fetch)
origin  git@github.com:github/git-reference.git (push)

นั่นอาจช่วยให้คุณเข้าใจว่าต้นฉบับ 'ต้นกำเนิด' ชี้ไปที่อะไร

หากคุณต้องการรักษาการเชื่อมต่อระยะไกลที่คุณเห็นด้วย -v แต่ยังต้องการติดตาม Rails tutorial โดยไม่ต้องจำ 'github' (หรือชื่ออื่น) สำหรับ repo ของ tutorial คุณสามารถเปลี่ยนชื่อrepository อื่นด้วย คำสั่ง:

git remote rename [current name] [new name]

ในขณะที่:

git remote rename origin oldrepo

จากนั้นคุณควรจะสามารถเริ่มการสอนของคุณต่อได้


35

ก่อนอื่นให้ทำ:

git remote rm origin

แล้วก็

git remote add origin https://github.com/your_user/your_app.git

และ voila! ทำงานให้ฉัน!


เหตุใดจึงต้องลบต้นกำเนิด มีวิธีใดบ้างที่เราจะเพิ่มอะไรก็ได้แทนที่จะเป็นจุดกำเนิด?
Abhils

27

ในกรณีพิเศษที่คุณกำลังสร้างพื้นที่เก็บข้อมูลใหม่เริ่มต้นจากพื้นที่เก็บข้อมูลเก่าที่คุณใช้เป็นแม่แบบ (อย่าทำสิ่งนี้ถ้าไม่ใช่กรณีของคุณ) ลบไฟล์ git ของที่เก็บเก่าโดยสมบูรณ์เพื่อให้คุณสามารถเริ่มใหม่ได้:

rm -rf .git

จากนั้นรีสตาร์ทที่เก็บ git ใหม่ตามปกติ:

git init
git add whatever.wvr ("git add --all" if you want to add all files)
git commit -m "first commit"
git remote add origin git@github.com:ppreyer/first_app.git
git push -u origin master

13

หากคุณต้องการตรวจสอบ repos ระยะไกลที่คุณเชื่อมต่อกับ repos ในพื้นที่ของคุณมี cmd:

git remote -v

ตอนนี้ถ้าคุณต้องการที่จะลบ repo ระยะไกล (พูดกำเนิด) แล้วสิ่งที่คุณสามารถทำได้คือ:

git remote rm origin

นี่ดูเหมือนความคิดเห็นมากกว่าคำตอบ เมื่อมีตัวแทนมากขึ้นคุณจะสามารถโพสต์ความคิดเห็นได้
นาธาน Tuggy

@NathanTuggy ไม่มันเป็นคำตอบที่สมบูรณ์และในความเห็นที่ต่ำต้อยของฉันตรงกว่าคำที่นิยมที่สุดในกระทู้นี้
daOnlyBG

@daOnlyBG: ฉันไม่แน่ใจว่าสิ่งที่คำตอบดูเหมือนเมื่อฉันเห็นมันเพราะก่อนที่ความคิดเห็นจะถูกล็อคในช่วงเวลาผ่อนผัน (และอาจมีการแก้ไขอย่างเงียบ ๆ ) แต่ตอนนี้มันสมบูรณ์พอสมควรฉันเห็นด้วย
นาธาน Tuggy

@NathanTuggy Woah ไม่รู้ว่ามีการแก้ไขที่เงียบครั้งแล้วครั้งเล่า ที่อธิบาย
daOnlyBG

7

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

git remote remove origin
git remote add origin git@github.com:ppreyer/first_app.git

วันนี้!


7

แนวคิดของremoteเป็นเพียง URL ของที่เก็บระยะไกลของคุณ

originเป็นนามแฝงที่ชี้ไปยัง URL ที่ ดังนั้นแทนที่จะเขียน URL ทั้งหมดทุกครั้งที่เราต้องการผลักดันบางสิ่งไปยังที่เก็บของเราเราแค่ใช้นามแฝงและเรียกใช้:

git push -u origin master

บอกให้คอมไพล์pushรหัสของเราจากสาขาหลักในพื้นที่ของเราไปยังที่เก็บต้นทางระยะไกลพื้นที่เก็บข้อมูล

เมื่อใดก็ตามที่เราโคลนพื้นที่เก็บข้อมูล , คอมไพล์สร้างนามแฝงนี้สำหรับเราโดยค่าเริ่มต้น นอกจากนี้เมื่อใดก็ตามที่เราสร้างที่เก็บใหม่เราก็สร้างมันขึ้นมาเอง

ไม่ว่าในกรณีใดเราสามารถเปลี่ยนชื่อนี้เป็นอะไรก็ได้ที่เราต้องการใช้งาน:

git remote rename [current-name] [new-name]

เนื่องจากมันถูกเก็บไว้ที่ฝั่งไคลเอ็นต์ของแอปพลิเคชันgit (บนเครื่องของเรา) การเปลี่ยนแปลงจึงไม่ส่งผลกระทบต่อสิ่งใดในกระบวนการพัฒนาของเรา จำไว้ว่ามันเป็นเพียงชื่อที่ชี้ไปยังที่อยู่ที่อยู่

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

git push -u my-remote-alias master

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

git remote -v

สิ่งนี้จะแสดงชื่อแทนทั้งหมดที่คุณมีบวก URL ที่เกี่ยวข้อง

คุณสามารถลบออกได้เช่นกันหากคุณต้องการเรียกใช้สิ่งนี้:

git remote rm my-remote-alias

ดังนั้นโดยย่อ:

  • ค้นหาสิ่งที่คุณมีอยู่แล้ว
  • ลบหรือเปลี่ยนชื่อพวกเขา
  • เพิ่มนามแฝงใหม่ของคุณ

การเข้ารหัสที่มีความสุข


5

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

วิธีลบข้อผิดพลาด: ลบไฟล์ git-hub ในโครงการของคุณจากนั้นทำซ้ำขั้นตอนต่อไปนี้ ...

git init       
git remote add origin git@bitbucket.org:Yourname/firstdemotry.git  
git add -A  
git commit -m 'Message'  
git push -u origin master  

5

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

git init

4

สำหรับการใช้คอมไพล์คุณต้องเป็น

ราก

ถ้าไม่ใช้ sudo

สำหรับการลบต้นกำเนิด:

คอมไพล์ลบระยะไกลกำเนิด

สำหรับการเพิ่มต้นกำเนิด:

git remote เพิ่มแหล่งกำเนิดhttp: // giturl


3
  • $ git remote add origin git@gitlab.com:abc/backend/abc.git

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

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

    $ git remote -v

    มันจะให้ผลลัพธ์แบบนี้กับคุณ origin git@gitlab.com:abc/backend/abc.git (fetch) origin git@gitlab.com:abc/backend/abc.git (push) origin1 git@gitlab.com:abc/backend/abc.git (fetch) origin1 git@gitlab.com:abc/backend/abc.git (push)

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

    • หากไม่ต่อเนื่องกับพา ธ ที่เก็บรีโมตของคุณ

    จากนั้นคุณสามารถเพิ่มแหล่งกำเนิดใหม่ที่มีชื่อแตกต่างกันและใช้สิ่งนั้นเพื่อผลักดันสิ่งที่ชอบ $ git remote add origin101 git@gitlab.com:abc/backend/abc.git

    หรือคุณสามารถเปลี่ยนชื่อชื่อที่มีอยู่เดิมเพิ่มที่มาของคุณ

    git remote rename origin destination

    ไฟด้านล่างคำสั่งอีกครั้ง

    $ git remote -v

    destination git@gitlab.com:abc/backend/abc.git (fetch) destination git@gitlab.com:abc/backend/abc.git (push)

    มันจะเปลี่ยนชื่อ repos ที่มีอยู่ของคุณเพื่อให้คุณสามารถใช้ชื่อที่มา

    หรือคุณสามารถลบต้นกำเนิดที่มีอยู่และเพิ่มต้นกำเนิดของคุณ

    git remote rm destination


3

ลองสิ่งนี้

  • cd existing_repo
  • คอมไพล์การเปลี่ยนชื่อจากระยะไกลกำเนิดเก่ากำเนิด

ขอบคุณมากนี่เป็นสิ่งเดียวที่ใช้ได้สำหรับฉัน
Akshat Tamrakar

2

พบข้อผิดพลาดเดียวกันในขณะที่เพิ่มพื้นที่เก็บข้อมูลเพื่อ git hun โดยใช้ git bash บน windows

 git remote add origin https://github.com/axaysushir/netflix_page_clone.git

ร้ายแรง: แหล่งกำเนิดระยะไกลมีอยู่แล้ว

fatal: remote origin already exists.

 ! [rejected]        master -> master (fetch first)

ข้อผิดพลาด: ไม่สามารถผลักดันผู้อ้างอิงบางคนไปที่ ' https://github.com/axaysushir/meditation_app_using_js.git '

อัพเดตที่เก็บโดยใช้คำสั่งต่อไปนี้

$ git remote set-url origin https://github.com/axaysushir/netflix_page_clone.git

จากนั้นเพิ่มที่เก็บโดยใช้ git remote เพิ่ม github แทน git remote add origin

$ git remote add github https://github.com/axaysushir/netflix_page_clone.git

จากนั้นเขียนคำสั่งต่อไปนี้แทน git push master origin ซึ่งจะอัปโหลดที่เก็บของคุณไปยัง GitHub

$ git push github master

2

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

git remote set-url origin https://github.com/SriramUmapathy/ReduxLearning.git

0

ตรวจสอบก่อนเพื่อดูจำนวนนามแฝงที่คุณมีและสิ่งที่พวกเขาคุณสามารถเริ่มต้นคำสั่งนี้ git remote -v

จากนั้นดูว่าคุณใช้แหล่งเก็บข้อมูลใดอยู่ในนั้นลองใช้ set-url - คอมไพล์รีโมต - เพิ่ม [จากนั้นลิงก์ที่เก็บของคุณ] git push -u origin master


0

อย่างน้อยเมื่อ bash เราสามารถบังคับให้ส่งคืนค่า exit code ของคำสั่งเป็น 0

คุณสามารถลบรีโมตเก่าและเพิ่มอีกครั้ง

git remote remove $1 || true
git remote add $1 $2

0

ในกรณีที่คุณต้องการทำผ่าน GUI ให้ทำดังนี้:

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