git - แหล่งกำเนิดเพิ่มระยะไกลกับแหล่งกำเนิดชุด URL ระยะไกล


412

ฉันสร้างที่เก็บใหม่:

git init
echo "# MESSAGE" >> README.md
git add README.md
git commit -m "first commit"

จากนั้นฉันต้องการที่จะผลักดันการกระทำของฉันไปยังพื้นที่เก็บข้อมูลระยะไกลที่ว่างเปล่าที่สร้างขึ้นบน Github ดังนั้นฉันต้องตั้งค่าระยะไกล

ความแตกต่างระหว่างการใช้คำสั่งต่อไปนี้คืออะไร? :

git remote add origin git@github.com:User/UserRepo.git
git remote set-url origin git@github.com:User/UserRepo.git

ในตอนท้ายฉันก็ดัน:

git push -u origin master

Edit1:

จะเกิดอะไรขึ้นเมื่อฉันเรียกใช้ชุดเริ่มต้นระยะไกลหลังจาก git init ต้นกำเนิดชุด URL ระยะไกลสร้างจุดเริ่มต้นหรือไม่ หากต้นกำเนิดมีอยู่แล้วหลังจาก git init ไม่มีความแตกต่างระหว่างการใช้คำสั่งเหล่านั้นในสถานการณ์ของฉันใช่ไหม?

คำตอบ:


508

ด้านล่างใช้สำหรับเพิ่มรีโมตใหม่:

git remote add origin git@github.com:User/UserRepo.git

ด้านล่างนี้ใช้เพื่อเปลี่ยน URL ของที่เก็บระยะไกลที่มีอยู่:

git remote set-url origin git@github.com:User/UserRepo.git

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

git push -u origin master

เอกสาร


ถ้าฉันโคลนจาก A ถึง Local ของฉันจากนั้นใช้ "git remote set-url B" จะลบที่เก็บใน A หรือไม่? ฉันพยายามโคลนที่เก็บจากรหัส AWS ที่ส่งไปยัง GitLab
Josh

โดยปกติแล้วเมื่อฉันฟอคโก repo ใหม่ฉันทำผิดพลาดและกำหนดที่มาต้นน้ำ ท้ายที่สุดจำเป็นต้องแก้ไขโดยใช้คำสั่งที่ 2git remote set-url origin git@github.com:User/UserRepo.git
Honey

-u ให้คุณชี้สาขาท้องถิ่นของคุณไปที่สาขาต้นแบบระยะไกลฉันไม่เข้าใจว่าทำไมฉันต้องการทำเช่นนั้น ฉันหมายถึงสมมติว่าฉันดึงจากต้นแบบสร้างฟีเจอร์ใหม่ ... มุ่งมั่นที่จะทำการเปลี่ยนแปลงของฉันแล้วผลักการเปลี่ยนแปลงของฉันไปที่จุดเริ่มต้น / featureBranch จากนั้นฉันก็รวม / ดึงคุณลักษณะนั้นเข้าสู่ต้นแบบของฉัน <- ในขณะนี้ฉันยังไม่ได้ใช้ฟีเจอร์แบรนช์ของฉันหรือไม่ เหตุใดฉันจึงต้องการให้ชี้ไปที่สาขาของต้นแบบระยะไกล ฉันไม่ควรเช็คเอ้าท์ไปที่ท้องถิ่น / หลักแล้วดึงจากที่มาล่าสุด
ฮันนี่

คำตอบนั้นดีมากยกเว้นคำอธิบายของ -uธงซึ่งในความคิดของฉันทำให้เข้าใจผิด สำหรับคำอธิบายของการ-uตั้งค่าสถานะฉันขอแนะนำให้ดูที่กระทู้นี้stackoverflow.com/questions/18867824/…
hoang tran

และ -u ให้คุณชี้สาขาท้องถิ่นปัจจุบันของคุณไปที่สาขาต้นแบบระยะไกล: ฉันไม่เข้าใจบรรทัดนี้ ... คุณหมายถึงอะไร?
ฝนตก

62
  • เมื่อคุณเรียกใช้แล้วระยะไกลใหม่ที่สร้างชื่อgit remote add origin git@github.com:User/UserRepo.gitorigin
  • เมื่อคุณเรียกใช้git remote set-url origin git@github.com:User/UserRepo.gitคอมไพล์ค้นหารีโมตที่มีชื่อoriginและเปลี่ยนเป็นที่เก็บรีโมต url ถ้าคอมไพล์ไม่สามารถหาชื่อใด ๆ ระยะไกลที่มีมันยกข้อผิดพลาดoriginfatal: No such remote 'origin'

หากคุณกำลังจะสร้างที่เก็บใหม่git remote add origin git@github.com:User/UserRepo.gitให้ใช้เพื่อเพิ่มรีโมต


โปรดดู Edit1
Irbis

git initไม่ได้เพิ่มต้นกำเนิดใด ๆ เฉพาะที่เก็บ git เท่านั้นที่จะถูกเริ่มต้น หากคุณโคลนที่เก็บข้อมูลใด ๆ ที่มีอยู่ก็มีแหล่งกำเนิดระยะไกล คำแนะนำการใช้งานgit addหลังจากที่ไม่ได้git init set-url
Ram

@Ram เป็นที่ชัดเจนว่าจะไม่เรียก set-url หลังจาก git init เนื่องจากไม่สมเหตุสมผล set-url คือการเปลี่ยนแปลงและเพิ่มคือการเพิ่มระยะไกลใหม่
Santosh

61

ด้านล่างนี้จะกำหนดค่าบริการซื้อซ้ำในพื้นที่ของคุณ การล้างรีโมตรีโมต (เช่นแหล่งกำเนิด):

git init

จากนั้นด้านล่างจะสร้าง 'ต้นกำเนิด' หากไม่มี:

git remote add origin [repo-url]

มิฉะนั้นคุณสามารถใช้คำset-urlสั่งย่อยเพื่อแก้ไขรีโมตที่มีอยู่:

git remote set-url origin [repo-url]

นอกจากนี้คุณสามารถตรวจสอบรีโมทที่มีอยู่ได้ด้วย

git remote -v

หวังว่านี่จะช่วยได้!


1
git remote set-url origin ...ใน repo ใหม่ที่เพิ่งได้รับข้อความถึงฉันร้ายแรง: ไม่มี 'ต้นกำเนิด' จากระยะไกล git remote add origin ...ทำงาน
Robb Vandaveer

@ RobbVandaveer ขอบคุณสำหรับการจับ! ฉันอัปเดตคำตอบสำหรับการใช้คำสั่งย่อยที่ถูกต้องset-url
vpibano

32

git remote add=> ADDSระยะไกลใหม่

git remote set-url=> อัปเดตรีโมตที่มีอยู่


  1. ชื่อรีโมตที่มาหลังจากนั้นaddคือชื่อรีโมตใหม่ที่ไม่มีอยู่ก่อนคำสั่งนั้น
  2. ชื่อรีโมตที่มาหลังจากนั้นset-urlควรมีอยู่แล้วเป็นชื่อรีโมตไปยังที่เก็บของคุณ

git remote add myupstream someurl => ชื่อระยะไกล myupstream ไม่มีอยู่ในขณะนี้สร้างด้วยคำสั่งนี้

git remote set-url upstream someurl => ชื่อรีโมต upstream มีอยู่แล้วฉันแค่เปลี่ยน URL แล้ว


git remote add myupstream https://github.com/nodejs/node => **ADD** If you don't already have upstream
git remote set-url upstream https://github.com/nodejs/node # => **UPDATE** url for upstream

30

ในการเพิ่มรีโมตใหม่ให้ใช้git remote addคำสั่งบนเทอร์มินัลในไดเรกทอรีที่เก็บของคุณถูกเก็บไว้ที่

git remote set-urlคำสั่งเปลี่ยนแปลงที่มีอยู่ URL พื้นที่เก็บข้อมูลระยะไกล

ดังนั้นพื้นฐานremote addคือการเพิ่มใหม่remote set-urlคือการปรับปรุงที่มีอยู่


28

1. git remote add origin git@github.com:User/UserRepo.git

  • git initคำสั่งนี้เป็นขั้นตอนที่สองในชุดคำสั่งหลังจากที่คุณเริ่มต้นคอมไพล์ลงพื้นที่เก็บข้อมูลการทำงานปัจจุบันของคุณโดยใช้
  • คำสั่งนี้แปลว่า"คุณกำลังเพิ่มตำแหน่งของที่เก็บระยะไกลที่คุณต้องการผลัก / ดึงไฟล์ของคุณไปยัง / จาก !! .. "
  • ที่เก็บข้อมูลระยะไกลของคุณสามารถอยู่ที่ใดก็ได้บน github, gitlab, bitbucket, ฯลฯ
  • นี่originคือชื่อแทน / ชื่อสำรองของที่เก็บรีโมตของคุณเพื่อให้คุณไม่ต้องพิมพ์พา ธ ทั้งหมดสำหรับรีโมตทุกครั้งและต่อจากนี้ไปคุณจะประกาศว่าคุณจะใช้ชื่อนี้ (ต้นทาง) เพื่ออ้างอิงรีโมตของคุณ ชื่อนี้อาจเป็นอะไรก็ได้
  • หากต้องการตรวจสอบว่าตั้งค่าระยะไกลอย่างถูกต้องให้พิมพ์ git remote -v

    หรือ git remote get-url origin

2. git remote set-url origin git@github.com:User/UserRepo.git

คำสั่งนี้หมายความว่าหากคุณบังเอิญไปที่ที่เก็บผิดครั้งแรกคุณสามารถ"รีเซ็ตพา ธ ที่เก็บรีโมตของคุณ"โดยใช้คำสั่งด้านบน

3. git push -u remote master

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

หากต้องการทราบรายชื่อสาขาทั้งหมดที่คุณมีในที่เก็บประเภทของคุณ:git branch



7

คุณไม่สามารถเรียกremote set-url originหลังgit initเพราะสิ่งที่git remote set-urlคำสั่งจะไม่สร้างแหล่งกำเนิด แต่การเปลี่ยนแปลงที่มีอยู่ URL

ดังนั้นคำสั่งgit remote set-urlจะใช้งานได้ก็ต่อเมื่อคุณโคลนที่เก็บหรือเพิ่มแหล่งกำเนิดระยะไกลที่เรียกด้วยตนเอง

คุณสามารถตรวจสอบระยะไกลด้วยคำสั่งgit remote -vมันจะแสดง URL ระยะไกลหลังจากชื่อหรือถ้าคำสั่งนี้ให้ข้อผิดพลาดเช่นfatal: Not a git repository (or any of the parent directories): .gitนั้นพื้นที่เก็บข้อมูลไม่ได้อยู่ดังนั้นคุณต้องเพิ่มต้นกำเนิดด้วยคำสั่งgit remote add

1 git remote add

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

คำสั่ง git remote add ใช้สองอาร์กิวเมนต์:

  1. ชื่อระยะไกลเช่นต้นกำเนิด
  2. URL ระยะไกลตัวอย่างเช่นhttps://github.com/user/repo.git

ตัวอย่างเช่น:

git remote add origin https://github.com/user/repo.git

2git remote set-url

คำสั่ง git remote set-url เปลี่ยน URL ที่เก็บรีโมตที่มีอยู่

คำสั่ง git remote set-url รับสองอาร์กิวเมนต์:

  1. ชื่อมีอยู่ห่างไกล ตัวอย่างเช่นoriginหรือupstreamเป็นสองตัวเลือกทั่วไป
  2. URL ใหม่สำหรับระยะไกล

ตัวอย่างเช่นคุณสามารถเปลี่ยน URL ของรีโมตจาก SSH เป็น HTTPS ด้วยgit remote set-urlคำสั่ง

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

คุณสามารถตรวจสอบว่า URL git remote -vระยะไกลมีการเปลี่ยนแปลงที่มีคำสั่ง

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

ตัวอย่างเช่น:

git remote add myorigin git@github.com:user/repo.git
git remote set-url myorigin https://github.com/user/repo.git

การอ้างอิงจาก github: การเพิ่มจากระยะไกล , set-url ระยะไกล


0

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

git init

หากคุณต้องการเพิ่มไฟล์ readme.md คุณสามารถสร้างและเพิ่มไฟล์โดยใช้คำสั่งด้านล่าง

git add README.md

ทำให้คำสั่งแรกของคุณกระทำโดยใช้คำสั่งด้านล่าง

git commit -m "first commit"

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

git remote add origin git@github.com:user-name/repository-name.git

วิธีผลักดันคอมมิชชันแรกของคุณดูคำสั่งด้านล่าง :

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