เมื่อฉันวิ่ง:
git push origin branchname
อะไรคือoriginสาเหตุและทำไมฉันต้องพิมพ์ก่อนชื่อสาขา
เมื่อฉันวิ่ง:
git push origin branchname
อะไรคือoriginสาเหตุและทำไมฉันต้องพิมพ์ก่อนชื่อสาขา
คำตอบ:
originเป็นนามแฝง บนระบบของคุณสำหรับพื้นที่เก็บข้อมูลระยะไกลโดยเฉพาะ จริงๆแล้วมันไม่ใช่คุณสมบัติของที่เก็บนั้น
จากการทำ
git push origin branchname
คุณกำลังบอกว่าจะผลักดันไปยังoriginพื้นที่เก็บข้อมูล ไม่จำเป็นต้องตั้งชื่อที่เก็บระยะไกลorigin: อันที่จริงที่เก็บเดียวกันอาจมีนามแฝงที่แตกต่างกันสำหรับนักพัฒนาอื่น
การควบคุมระยะไกลเป็นเพียงนามแฝงที่เก็บ URL ของที่เก็บ คุณสามารถดูว่า URL ใดที่เป็นของแต่ละรีโมตโดยใช้
git remote -v
ในpushคำสั่งคุณสามารถใช้รีโมตหรือคุณสามารถใช้URLโดยตรง ตัวอย่างที่ใช้ URL:
git push git@github.com:git/git.git master
git pushคุณจะเห็นว่ามันตรวจสอบก่อนการตั้งค่าสำหรับพื้นที่เก็บข้อมูลที่ (ซึ่งคุณสามารถตรวจสอบกับgit config --list) branch.<branchname>.remoteสำหรับคีย์ที่เรียกว่า หากยังไม่ได้ตั้งค่า "เป็นค่าเริ่มต้นของการเริ่มต้น" - git-scm.com/docs/git-push
originคือไม่ได้ชื่อพื้นที่เก็บข้อมูลระยะไกล มันค่อนข้างจะเป็นนามแฝงในท้องถิ่นที่ตั้งเป็นกุญแจสำคัญในสถานที่ของ URL ที่เก็บระยะไกล
มันหลีกเลี่ยงผู้ใช้ต้องพิมพ์ URL ระยะไกลทั้งหมดเมื่อมีข้อความแจ้ง
ชื่อนี้ถูกตั้งค่าตามค่าเริ่มต้นและสำหรับการประชุมโดย Git เมื่อทำการโคลนจากระยะไกลเป็นครั้งแรก
ชื่อนามแฝงนี้ไม่ได้เข้ารหัสอย่างหนักและสามารถเปลี่ยนแปลงได้โดยใช้คำสั่งต่อไปนี้:
git remote rename origin mynewalias
ลองดูที่http://git-scm.com/docs/git-remoteเพื่อชี้แจงเพิ่มเติม
Git มีแนวคิดของ "รีโมท" ซึ่งเป็นเพียง URL ไปยังสำเนาอื่น ๆ ของที่เก็บของคุณ เมื่อคุณโคลนที่เก็บอื่น Git จะสร้างชื่อ "ต้นกำเนิด" ระยะไกลโดยอัตโนมัติและชี้ไปที่มัน
git remote show originคุณสามารถดูข้อมูลเพิ่มเติมเกี่ยวกับระยะไกลโดยการพิมพ์
git remote show originทำไมไม่ใช่อย่างง่าย ๆgit show origin? จะต้องมีเหตุผลมันคืออะไร? ขอบคุณ
originเป็นนามแฝงเริ่มต้นไปยัง URL ของที่เก็บระยะไกลของคุณ
! ง่าย "origin" เป็นเพียงชื่อเล่นรีโมตของคุณเมื่อคุณรันคำสั่งดังนี้:
git remote add origin git@github.com:USERNAME/REPOSITORY-NAME.git
ตั้งแต่นั้นมา Git รู้ว่า "จุดเริ่มต้น" ชี้ไปยังที่เก็บเฉพาะนั้น (ในกรณีนี้คือที่เก็บ GitHub) คุณสามารถตั้งชื่อมันว่า "gitHub" หรือ "repo" หรืออะไรก็ได้ที่คุณต้องการ
ฉันก็สับสนกับเรื่องนี้และด้านล่างคือสิ่งที่ฉันได้เรียนรู้
เมื่อคุณโคลนที่เก็บตัวอย่างเช่นจาก GitHub:
originเป็นนามแฝงสำหรับ URL ที่คุณโคลนที่เก็บ โปรดทราบว่าคุณสามารถเปลี่ยนนามแฝงนี้
มีหนึ่งmasterสาขาในที่เก็บระยะไกล (นามแฝงโดยorigin) นอกจากนี้ยังมีmasterสาขาอื่นที่สร้างขึ้นในเครื่อง
สามารถดูข้อมูลเพิ่มเติมได้จากคำถาม SO นี้: การแยกสาขา Git: master vs. origin / master เทียบกับ remotes / origin / master
เมื่อคุณโคลนที่เก็บข้อมูลด้วยgit cloneมันจะสร้างการเชื่อมต่อระยะไกลที่เรียกว่าoriginชี้ไปที่ที่เก็บโคลนโดยอัตโนมัติ สิ่งนี้มีประโยชน์สำหรับนักพัฒนาที่สร้างสำเนาโลคัลของที่เก็บส่วนกลางเนื่องจากเป็นวิธีที่ง่ายในการดึงการเปลี่ยนแปลงในระดับต้นหรือเผยแพร่การมอบหมายในพื้นที่ พฤติกรรมนี้ก็เป็นสาเหตุที่โปรเจคที่ใช้ Git ส่วนใหญ่เรียกที่มาของที่เก็บส่วนกลาง
คำตอบที่ดีที่สุดที่นี่:
https://www.git-tower.com/learn/git/glossary/origin
ใน Git "origin" เป็นชื่อชวเลขสำหรับที่เก็บระยะไกลที่โครงการถูกโคลนตั้งแต่แรก แม่นยำยิ่งขึ้นมันถูกใช้แทน URL ของที่เก็บต้นฉบับ - และทำให้การอ้างอิงง่ายขึ้นมาก
จากhttps://www.git-tower.com/learn/git/glossary/origin :
ใน Git "origin" เป็นชื่อชวเลขสำหรับที่เก็บระยะไกลที่โครงการถูกโคลนตั้งแต่แรก แม่นยำยิ่งขึ้นมันถูกใช้แทน URL ของที่เก็บต้นฉบับ - และทำให้การอ้างอิงง่ายขึ้นมาก
โปรดทราบว่าต้นกำเนิดนั้นไม่ได้หมายถึงชื่อ "วิเศษ" แต่เป็นแบบแผนมาตรฐาน แม้ว่ามันจะเหมาะสมที่จะออกจากการประชุมนี้ไม่มีใครแตะต้องคุณสามารถเปลี่ยนชื่อได้อย่างสมบูรณ์แบบโดยไม่สูญเสียฟังก์ชันการทำงานใด ๆ
ในตัวอย่างต่อไปนี้พารามิเตอร์ URL ของคำสั่ง "clone" กลายเป็น "ต้นทาง" สำหรับที่เก็บโลคัลโคลน:
git clone https://github.com/gittower/git-crash-course.git
คำตอบอื่น ๆ บอกว่าoriginเป็นนามแฝงสำหรับURLของที่เก็บระยะไกลซึ่งไม่ถูกต้องทั้งหมด ควรสังเกตว่าที่อยู่ที่ขึ้นต้นด้วยhttpเป็น URL ในขณะที่ที่ขึ้นต้นด้วยgit@คือURIหรือ Universal Resource Identifier
URL ทั้งหมดเป็น URIs แต่ไม่ใช่ URIs ทั้งหมดที่เป็น URL
กล่าวโดยย่อเมื่อคุณพิมพ์git remote add origin <URI>คุณกำลังบอกคอมไพล์ท้องถิ่นของคุณว่าเมื่อใดก็ตามที่คุณใช้คำว่าoriginคุณหมายถึง URI ที่คุณระบุ คิดว่ามันเหมือนตัวแปรถือค่า
และเช่นเดียวกับตัวแปรที่คุณสามารถตั้งชื่อสิ่งที่คุณต้องการ (เช่น. github, heroku, destinationฯลฯ )
ระยะไกล (นามแฝงของที่เก็บ url) → แหล่งกำเนิด (นามแฝงต้นน้ำ) → ต้นแบบ (นามแฝงสาขา);
remoteระดับเดียวกับworking directory, index, repository,
origin, แม็พสาขาที่เก็บโลคัลไปยังสาขาที่เก็บแบบรีโมต