ความแตกต่างระหว่างต้นกำเนิดและต้นน้ำบน GitHub คืออะไร?


409

ความแตกต่างระหว่างoriginและupstreamบนGitHubคืออะไร?

เมื่อgit branch -aคำสั่งเสร็จสิ้นบางสาขาจะมีคำนำหน้าเป็นorigin( remotes/origin/..) ในขณะที่บางคำสั่งมีคำนำหน้าเป็นupstream( remotes/upstream/..)


คำตอบ:


804

สิ่งนี้ควรเข้าใจในบริบทของส้อม GitHub (ที่คุณแยก repo GitHub บน GitHub ก่อนที่จะทำการคัดแยกส้อมนั้นในเครื่อง)

  • upstreamโดยทั่วไปหมายถึงธุรกรรมซื้อคืนเดิมที่คุณได้แยก
    (ดู " คำจำกัดความของ" downstream"และ" upstream" " สำหรับupstreamคำศัพท์เพิ่มเติม)
  • origin เป็นทางแยกของคุณ: repo ของคุณเองบน GitHub, โคลนของ repo ดั้งเดิมของ GitHub

จากหน้า GitHub:

เมื่อ repo ถูกโคลนมันจะมีรีโมทเริ่มต้นที่เรียกoriginว่าชี้ไปที่ทางแยกของคุณบน GitHub ไม่ใช่ repo ดั้งเดิมที่ถูกแยกจาก
ในการติดตาม repo ดั้งเดิมคุณต้องเพิ่มชื่อรีโมตอื่นupstream

git remote add upstream git://github.com/<aUser>/<aRepo.git>

(พร้อมaUser/aRepoการอ้างอิงสำหรับผู้สร้างและที่เก็บต้นฉบับที่คุณแยกไว้)

คุณจะใช้upstreamเพื่อดึงข้อมูลจาก repo ดั้งเดิม (เพื่อให้สำเนาภายในเครื่องของคุณตรงกับโครงการที่คุณต้องการมีส่วนร่วม)

git fetch upstream

( โดยค่าเริ่มต้นgit fetchจะดึงจากคนเดียวoriginซึ่งไม่ใช่สิ่งที่ต้องการที่นี่)

คุณจะใช้originในการดึงและดันเนื่องจากคุณสามารถมีส่วนร่วมในพื้นที่เก็บข้อมูลของคุณเอง

git pull
git push

(อีกครั้งโดยไม่มีพารามิเตอร์จะใช้ 'ต้นกำเนิด' เป็นค่าเริ่มต้น)

คุณจะมีส่วนร่วมกลับไปupstreamrepo โดยการร้องขอดึง

ทางแยกและต้นน้ำ


11
นอกจากนี้ยังช่วยให้ทราบว่าupstreamโดยทั่วไปคืออะไร: stackoverflow.com/questions/2739376/…
VonC

2
@ MaxRydahlAndersen จริง แต่ฉันชอบใช้ Git โดยไม่มีเสื้อคลุมดังนั้นฉันจะรักษาแบบแผนนั้น (ต้นน้ำและต้นกำเนิด) ตอนนี้
VonC

22
คำอธิบายที่ดีที่สุดของวิธีส้อมทำงานที่ฉันได้เห็น คุณได้รับ upvote ของฉัน
CodeChimp

9
ทำงานได้ดีบนภาพ ตรงไปตรงมาและคำตอบที่เข้าใจได้ นี่คือสิ่งที่ฉันกำลังมองหา
tayopi

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