รับ repo Foo และ repo Bar ฉันต้องการที่จะผสานกับบาร์ฟูแต่bazเพียงเป็นสาขาย่อยที่เรียกว่า
git checkout -b baz <= ใส่ Bar repo ที่นี่
รับ repo Foo และ repo Bar ฉันต้องการที่จะผสานกับบาร์ฟูแต่bazเพียงเป็นสาขาย่อยที่เรียกว่า
git checkout -b baz <= ใส่ Bar repo ที่นี่
คำตอบ:
คุณไม่สามารถรวมที่เก็บลงในสาขาได้ คุณสามารถรวมสาขาจากที่เก็บอื่นเข้ากับสาขาในที่เก็บในเครื่องของคุณ สมมติว่าคุณมีที่เก็บสองที่fooและbarทั้งสองที่อยู่ในไดเร็กทอรีปัจจุบันของคุณ:
$ ls
foo bar
เปลี่ยนเป็นที่fooเก็บ:
$ cd foo
เพิ่มที่barเก็บเป็นรีโมตและดึงข้อมูล:
$ git remote add bar ../bar
$ git remote update
สร้างสาขาใหม่bazในที่fooเก็บตามสาขาปัจจุบันของคุณ:
$ git checkout -b baz
ผสานสาขาsomebranchจากที่barเก็บลงในสาขาปัจจุบัน:
$ git merge --allow-unrelated-histories bar/somebranch
( --allow-unrelated-historiesไม่จำเป็นต้องใช้ก่อน git เวอร์ชัน 2.9)
อัปเดตด้วยคำสั่ง "ชีวิตจริง":
เริ่มจากไดเร็กทอรี repo ของคุณตรวจสอบให้แน่ใจว่าสำเนาการทำงานของคุณสะอาด (ไม่มีไฟล์เปลี่ยนแปลงเพิ่มหรือลบออก)
สร้างสาขาใหม่:
git checkout -b <my-branch>
เพิ่มรีโมตสำรองจากนั้นดึงข้อมูล:
git remote add <repo-name> git@github.com:xxx/<repo-name>.git
git remote update
รวมสาขาหนึ่งในสาขาปัจจุบันของคุณ:
git merge <repo-name>/<their-branch>
หากคุณไม่ทราบว่า<their-branch>คุณต้องการจากนั้นไปที่master
หากคุณแน่ใจว่าต้องการยอมรับการเปลี่ยนแปลงระยะไกลทั้งหมดและหลีกเลี่ยงความขัดแย้ง ( เขียนทับของคุณ ) คุณสามารถระบุ-X theirsเป็นตัวเลือกสำหรับgit mergeในขั้นตอนสุดท้าย
หากคุณต้องการเพิ่มในไดเร็กทอรีย่อยคุณควรใช้โมดูลย่อย git
ด้วยคำแนะนำจาก larsks ฉันสามารถทำได้โดยใช้ SourceTree
--allow-unrelated-historiesคำสั่ง git merge