Git ดึงจากที่เก็บอื่น


98

ฉันมีที่เก็บที่เรียกว่าGenericซึ่งเป็นแอปพลิเคชันทั่วไป ฉันได้แยกมันลงในที่เก็บที่เรียกว่าAcmeซึ่งสร้างขึ้นจากที่เก็บแอปพลิเคชันที่เก็บไว้Genericและเพิ่มการสร้างแบรนด์ Acme Co เข้าไป

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

เท่าที่ฉันสามารถบอกได้ฉันพยายามรวมการเปลี่ยนแปลงที่เกิดขึ้นในที่เก็บอัพสตรีมลงในส้อมปัจจุบันเป็นหลัก

หากมีความหมายอะไรฉันกำลังพยายามทำสิ่งนี้เพราะฉันมีแอปพลิเคชันทั่วไปที่ฉันสร้างขึ้นและสร้างแบรนด์ให้กับลูกค้าแต่ละราย (เช่นAcmeในตัวอย่างนี้) หากมีวิธีที่สะอาดกว่านี้โปรดแจ้งให้เราทราบ

คำตอบ:


140

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

git remote add upstream https://location/of/generic.git

จากนั้นคุณสามารถผสานการเปลี่ยนแปลงใด ๆ ที่ทำกับGenericสาขาปัจจุบันAcmeด้วยคำสั่งต่อไปนี้:

git pull upstream

หากคุณต้องการให้ดาวน์โหลดการเปลี่ยนแปลงโดยไม่รวมโดยอัตโนมัติให้ใช้git fetchแทนgit pullไฟล์.

หากคุณต้องการปิดใช้งานการพุชไปยังที่เก็บนั้นให้ตั้งค่า push URL เป็น URL ที่ไม่ถูกต้องโดยใช้สิ่งต่างๆเช่น

git config remote.upstream.pushurl "NEVER GONNA GIVE YOU UP"

ตอนนี้ Git จะตะโกนใส่คุณว่าไม่สามารถหา repo ได้ถ้าคุณพยายามผลักดันupstream(และขอโทษเกี่ยวกับ Rickroll แต่มันเป็นสตริงสุ่มแรกที่โผล่เข้ามาในหัวของฉัน)


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

1
ฉันเริ่มตอบ แต่ฉันเห็นว่า McLovin แก้ไขคำตอบของเขาแล้วเพื่อรวมสิ่งนั้น
Frankie Simon

4
ตั้งแต่ git 2.9 คุณจะต้องระบุแฟล็ก --allow-unrelated-histories ดูstackoverflow.com/a/37938036/3799847
sfinks_29

5
ฉันต้องการที่จะออกgit pull --allow-unrelated-histories upstream master
Alec Jacobson

ฉันลองแล้ว แต่git pull upstreamก็แฮง ...
Paulo Carvalho

11

ในการดึงสาขาเฉพาะจาก repo อื่นคุณสามารถใช้คำสั่ง git ด้านล่าง

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