แหล่งกำเนิดระยะไกลมีอยู่แล้วใน 'git push' ไปยังที่เก็บใหม่


548

ฉันมีโครงการของฉันใน GitHub ในบางที่, git@github.com:myname/oldrep.git.

ตอนนี้ฉันต้องการที่จะผลักดันรหัสทั้งหมดของฉันไปยังที่เก็บใหม่ที่อื่นบางแห่ง, git@github.com:newname/newrep.git.

ฉันใช้คำสั่ง:

git remote add origin git@github.com:myname/oldrep.git

แต่ฉันได้รับสิ่งนี้:

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


6
ให้ผลลัพธ์ของคำสั่ง $> git remote -v show
sykora


วิธีที่ดีคือใช้"นำเข้าจากแหล่งเก็บข้อมูลอื่น"ที่ด้านล่างของพื้นที่เก็บข้อมูลที่สร้างขึ้นใหม่ของคุณหากคุณทราบ URL ของแหล่งข้อมูลเก่า
JW.ZG

มีการถามคำถามที่คล้ายกันที่นี่: stackoverflow.com/questions/2432764/…
jciloa

1
หากคุณต้องการที่จะเก็บเดิมระยะไกลคุณก็สามารถใช้ชื่อที่แตกต่างกันgit remote add origin2 ...., แต่ถ้าคุณเพียงต้องการที่จะผลักดันครั้งเดียวโดยไม่ต้องแก้ไขการกำหนดค่า repo git push git@github.com:user/another-project.git master:masterแล้วคุณก็สามารถทำได้
ccpizza

คำตอบ:


870

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

ตัวอย่างเช่นคุณสามารถเขียน:

git remote add myorigin git@github.com:myname/oldrep.git  
git remote add testtest git@github.com:myname/oldrep.git

ดูคู่มือ:

http://www.kernel.org/pub/software/scm/git/docs/git-remote.html

ในการลบที่เก็บระยะไกลคุณป้อน:

git remote rm origin

อีกครั้ง "origin" เป็นชื่อของที่เก็บรีโมตหากคุณต้องการลบรีโมต "upstream":

git remote rm upstream

8
"git remote rm origin" ไม่ทำงานจากฉันถ้ามันไม่ได้ผลสำหรับคุณลองตรวจสอบกับ "git remote -v" นี่จะแสดงให้คุณเห็นว่าที่มาของคุณมีการตั้งค่า url หรือไม่ ทำ init ในเครื่องและพยายามผลักมันจากระยะไกลและทำผิดพลาดอย่างฉัน) จากนั้นทำตามคำตอบของ RobinH: git remote set-url กำเนิด git@github.com: ชื่อผู้ใช้ / projectname.git
Clarence Liu

1
ตรวจสอบคำตอบนี้เพื่อบังคับให้ url
srodriguex

"ต้นกำเนิด rm git ระยะไกล" ทำงานเหมือนมีเสน่ห์วิเศษ! :) puhh ฉันยังใหม่กับคำศัพท์ของ git ดังนั้นมันจึงเป็นการค้นหาที่ใหญ่กว่า แต่คำตอบของคุณช่วยฉันได้มาก :) ขอบคุณ!
Martin Pfeffer

3
git push -u origin master --force
Ronnie Royston

- แรงเป็นทางออก!
ผู้สร้าง

260

โซลูชันก่อนหน้าดูเหมือนจะไม่สนใจจุดเริ่มต้นและพวกเขาแนะนำให้ใช้ชื่ออื่นเท่านั้น เมื่อคุณต้องการใช้git push originอ่านต่อ

ปัญหาปรากฏขึ้นเนื่องจากมีการติดตามลำดับการกำหนดค่า Git ที่ไม่ถูกต้อง คุณอาจเพิ่ม 'git origin' ลงในการกำหนดค่า. git ของคุณแล้ว

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

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

คำสั่งนี้ตั้งค่า URL ใหม่สำหรับที่เก็บ Git ที่คุณต้องการกด ที่สำคัญคือการเติมในของคุณเองชื่อผู้ใช้และprojectname


7
ขอบคุณสิ่งที่ฉันต้องทำ :)
winkbrace

อันนี้มันสำหรับฉัน แต่สิ่งที่ช่วยฉันได้จริงๆกับปัญหานี้ก็เพราะผู้ใช้ portableGit ที่ติดตั้งกับ Gihub สำหรับ windows ฉันพบวิธีแก้ปัญหาที่นี่
PerseP

ที่ดี! ฉันต้องการเปลี่ยน repo gitorious ของฉันเป็น git lab repo และโซลูชันนี้สมบูรณ์แบบ! ขอบคุณ!
Marcelo dos Santos

สถานการณ์เดียวกับ OP และฉันต้องทำสิ่งนี้จากนั้นก็แก้ปัญหาของ @HusHus
Sean the Bean

4
นี่เป็นคำตอบที่ดีที่สุด IMHO
kratos

83

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

git remote rm origin

"ชื่อจริงของชื่อ" กำเนิด "ผิดพลาดหมายความว่าอะไรคุณช่วยอธิบายรายละเอียดได้ไหม @Ozgur
Yuan Wen

1
นี่อาจหมายความว่าคุณเพิ่มแหล่งกำเนิดระยะไกลที่ไม่ได้ชี้ไปยังที่เก็บ git ดังนั้นหากคุณวางแผนที่จะผลักดันการเปลี่ยนแปลงทั้งหมดของคุณไปยังต้นแบบ git จะบ่นว่าแหล่งกำเนิดระยะไกลไม่ใช่ที่เก็บ git
Gautham Honnavara

22

METHOD1->

เนื่องจากมีแหล่งกำเนิดอยู่แล้วให้ลบออก

git remote rm origin
git remote add origin https://github.com/USERNAME/REPOSITORY.git

METHOD2->

ท่านสามารถเปลี่ยน URL ที่เก็บรีโมตที่มีอยู่โดย -> git remote set-url

หากคุณกำลังอัปเดตเพื่อใช้ HTTPS

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

หากคุณกำลังอัปเดตเพื่อใช้ SSH

git remote set-url origin git@github.com:USERNAME/REPOSITORY.git

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

METHOD3->

ใช้คำสั่ง git remote rename เพื่อเปลี่ยนชื่อรีโมตที่มีอยู่ ชื่อรีโมตที่มีอยู่ตัวอย่างเช่น Origin

git remote rename origin startpoint
# Change remote name from 'origin' to 'startpoint'

เพื่อตรวจสอบชื่อใหม่ของรีโมท ->

git remote -v

หากยังใหม่กับ Git ให้ลองใช้บทแนะนำนี้ ->

ทดลองใช้ Git TITORIAL


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

17

คุณสามารถแก้ไขไฟล์กำหนดค่าในเท็กซ์เอดิเตอร์

ในการ~/.gitconfigที่คุณต้องการที่จะใส่ในบางสิ่งบางอย่างเช่นต่อไปนี้:

[user]
        name  = Uzumaki Naruto
        email = myname@example.com

[github]
        user = myname
        token = ff44ff8da195fee471eed6543b53f1ff

ในoldrep/.git/configไฟล์ (ในไฟล์คอนฟิกูเรชันของที่เก็บของคุณ):

[remote "github"]
        url = git@github.com:myname/oldrep.git
        push  = +refs/heads/*:refs/heads/*
        push  = +refs/tags/*:refs/tags/*

หากมีส่วนรีโมตในไฟล์คอนฟิกูเรชันของที่เก็บของคุณและ URL ตรงกันคุณต้องเพิ่มการกำหนดค่าแบบพุชเท่านั้น หากคุณใช้ URL สาธารณะในการดึงข้อมูลคุณสามารถใส่ URL เพื่อดันเป็น 'pushurl' (คำเตือน: ต้องใช้ Git รุ่น 1.6.4 ที่เพิ่งเปิดตัว)


10
  1. git remote rm origin

  2. git remote -v มันจะไม่แสดงชื่อที่เก็บใด ๆ

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

  4. git push origin master มันจะเริ่มกระบวนการและสร้างสาขาใหม่ คุณสามารถเห็นงานของคุณถูกผลักไปที่ GitHub


8

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

git remote เพิ่มgithub git@github.com: myname / oldrep.git



6

ฉันได้รับปัญหาเดียวกันและนี่คือวิธีที่ฉันแก้ไขได้หลังจากทำการวิจัยบางอย่าง:

  1. ดาวน์โหลดGitHub สำหรับ Windowsหรือใช้สิ่งที่คล้ายกันซึ่งรวมถึงเชลล์
  2. เปิดGit Shellจากเมนูงาน สิ่งนี้จะเปิดเปลือกพลังงานรวมถึงคำสั่ง Git
  3. ในเชลล์ให้เปลี่ยนไปใช้ที่เก็บข้อมูลเก่าของคุณเช่น cd C:\path\to\old\repository
  4. แสดงสถานะของที่เก็บเก่า

    • พิมพ์git remote -vเพื่อรับพา ธ รีโมตสำหรับดึงและผลักดันรีโมต หากที่เก็บในตัวเครื่องของคุณเชื่อมต่อกับรีโมตมันจะแสดงดังนี้:

      จุดเริ่มต้น https: //user@bitbucket.org/team-or-user-name/myproject.git (ดึงข้อมูล) จุดเริ่มต้น https: //user@bitbucket.org/team-or-user-name/myproject.git (พุช)

    • หากไม่ได้เชื่อมต่ออาจปรากฏขึ้นoriginเท่านั้น

  5. ตอนนี้ลบที่เก็บระยะไกลจากที่เก็บท้องถิ่นโดยใช้

    git remote rm origin
    
  6. ตรวจสอบอีกครั้งด้วยขั้นตอนที่ 4 ซึ่งควรแสดงoriginเท่านั้นแทนที่จะเป็นเส้นทางดึงข้อมูลและเส้นทาง

  7. หลังจากที่ที่เก็บรีโมตเก่าของคุณถูกตัดการเชื่อมต่อคุณสามารถเพิ่มที่เก็บรีโมตใหม่ได้ ใช้สิ่งต่อไปนี้เพื่อเชื่อมต่อกับที่เก็บใหม่ของคุณ

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

cd /path/to/my/repo # If haven't done yet
git remote add mynewrepo https://user@bitbucket.org/team-or-user-name/myproject.git
git push -u mynewrepo master # To push changes for the first time

แค่นั้นแหละ.


5

ฉันมีปัญหาเดียวกันเมื่อครั้งแรกที่ผมตั้งค่าการใช้Bitbucket

ปัญหาของฉันคือฉันต้องเปลี่ยนคำที่มาสำหรับสิ่งที่กำหนดด้วยตนเอง ฉันใช้ชื่อแอปพลิเคชัน ดังนั้น:

git remote add AppName https://someone@bitbucket.org/somewhere/something.git

4

คุณควรเปลี่ยนชื่อของที่เก็บระยะไกลเป็นอย่างอื่น

git remote add origin git@github.com:myname/oldrep.git

ถึง

git remote add neworigin git@github.com:myname/oldrep.git

ฉันคิดว่ามันน่าจะใช้ได้นะ

ใช่สิ่งเหล่านี้ใช้สำหรับที่เก็บ init และเพิ่มรีโมตใหม่ เพียงแค่เปลี่ยนชื่อ


3

คุณสามารถเปลี่ยนชื่อพื้นที่เก็บข้อมูลที่คุณต้องการผลักดันในไฟล์ REPOHOME / .git / config

(โดยที่ REPOHOME คือพา ธ ไปยังโลคัลพื้นที่เก็บข้อมูลของคุณ)



0

คุณต้องตรวจสอบoriginและเพิ่มถ้าไม่มี

if ! git config remote.origin.url >/dev/null; then
    git remote add origin git@github.com:john/doe.git
fi

สร้างแฟ้มcheck.shวางปรับปรุงสคริปต์ URL ./check.shพื้นที่เก็บข้อมูลของคุณคอมไพล์และเรียกใช้


0

ขั้นตอนที่ 1

git remote rm origin

ขั้นตอนที่ 2

git remote add origin enter_your_repository_url

ตัวอย่าง:

git remote add origin https://github.com/my_username/repository_name.git

-1

ก่อนอื่นให้เขียนบรรทัดของรหัสนี้เพื่อลบรีโมต:

$ git remote rm origin

แล้วเขียนบรรทัดนี้:

$ git remote add origin https://github.com/khadim321/React-Form.git

มันทำงานอย่างถูกต้อง


โปรดลองอธิบายเพิ่มเติมเพื่อให้คำตอบของคุณมีค่ามากขึ้น
เซซิน่า

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

-1

หากคุณต้องการสร้างพื้นที่เก็บข้อมูลใหม่ที่มีโครงการเดียวกันภายใน github และ Remote ก่อนหน้านี้ไม่อนุญาตให้คุณทำเช่นนั้นในกรณีนั้น First Delete Repository บน github จากนั้นคุณเพียงแค่ลบโฟลเดอร์. git C: \ Users \ Shiva \ AndroidStudioProjects \ yourprojectname \ .git ลบโฟลเดอร์นั้น (ต้องแน่ใจว่าคุณคลิกไฟล์ที่ซ่อนอยู่เนื่องจากโฟลเดอร์นี้ซ่อนอยู่)

ยังคลิกที่เครื่องหมายลบ (ปุ่มลบ) จาก android studio Setting-> VersionControl คลิกที่นี่เพื่อลบการควบคุมเวอร์ชันจาก androidจากนั้นคุณจะสามารถสร้างพื้นที่เก็บข้อมูลใหม่

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