คำถามติดแท็ก git-subtree

25
แยกไดเรกทอรีย่อย (ย้าย) ออกเป็นที่เก็บ Git แยกต่างหาก
ฉันมีที่เก็บGitซึ่งมีจำนวนไดเรกทอรีย่อย ตอนนี้ฉันได้พบว่าหนึ่งในไดเรกทอรีย่อยที่ไม่เกี่ยวข้องกับอื่น ๆ และควรจะแยกออกไปที่เก็บแยกต่างหาก ฉันจะทำสิ่งนี้ในขณะที่เก็บประวัติของไฟล์ในไดเรกทอรีย่อยได้อย่างไร ฉันเดาว่าฉันสามารถสร้างโคลนและลบส่วนที่ไม่ต้องการของแต่ละโคลนได้ แต่ฉันคิดว่านี่จะให้ต้นไม้ที่สมบูรณ์แก่ฉันเมื่อตรวจสอบการแก้ไขรุ่นเก่า ฯลฯ ซึ่งอาจเป็นที่ยอมรับ แต่ฉันอยากจะแกล้งทำเป็นว่า ที่เก็บสองแห่งไม่มีประวัติที่ใช้ร่วมกัน เพียงเพื่อให้ชัดเจนฉันมีโครงสร้างดังต่อไปนี้ XYZ/ .git/ XY1/ ABC/ XY2/ แต่ฉันต้องการสิ่งนี้แทน: XYZ/ .git/ XY1/ XY2/ ABC/ .git/ ABC/

22
คุณจะรวมที่เก็บ Git สองแห่งได้อย่างไร
พิจารณาสถานการณ์สมมติต่อไปนี้: ฉันได้พัฒนาโครงการทดลองขนาดเล็ก A ใน Git repo ของตัวเอง ตอนนี้ครบกำหนดแล้วและฉันต้องการให้ A เป็นส่วนหนึ่งของโครงการ B ขนาดใหญ่ซึ่งมีพื้นที่เก็บข้อมูลขนาดใหญ่ของตัวเอง ตอนนี้ฉันต้องการเพิ่ม A เป็นไดเรกทอรีย่อยของ B ฉันจะรวม A เข้ากับ B โดยไม่สูญเสียประวัติด้านใดได้อย่างไร


8
รวมสองที่เก็บ Git โดยไม่ทำลายประวัติไฟล์
ฉันต้องรวมที่เก็บ Git สองอันเข้ากับที่เก็บใหม่และที่สาม ฉันพบคำอธิบายมากมายเกี่ยวกับวิธีการทำเช่นนี้โดยใช้ทรีย่อย (ตัวอย่างเช่นคำตอบของ Jakub Narębskiเกี่ยวกับคุณผสานที่เก็บ Git สองอันได้อย่างไร ) และทำตามคำแนะนำเหล่านั้นส่วนใหญ่ทำงานยกเว้นว่าเมื่อฉันคอมทรีทรีผสานไฟล์ทั้งหมด จากที่เก็บเก่าจะถูกบันทึกเป็นไฟล์ที่เพิ่มใหม่ ฉันสามารถดูประวัติการส่งมอบจากที่เก็บข้อมูลเก่าเมื่อฉันทำgit logแต่ถ้าฉันทำgit log <file>มันจะแสดงการกระทำเพียงครั้งเดียวสำหรับไฟล์นั้น - การรวมทรีย่อย ตัดสินจากความเห็นในคำตอบข้างต้นฉันไม่ได้อยู่คนเดียวในการเห็นปัญหานี้ แต่ฉันไม่พบวิธีแก้ไขปัญหาที่เผยแพร่ มีวิธีใดบ้างที่จะรวมที่เก็บข้อมูลและปล่อยประวัติไฟล์แต่ละไฟล์ไว้เหมือนเดิม?
226 git  git-subtree 

12
เหตุใดฉันจึงไม่สามารถพุชทรีย่อย Git ที่เป็นปัจจุบันนี้ได้
ฉันใช้ทรีย่อย Git กับโปรเจ็กต์สองสามโปรเจ็กต์ที่ฉันกำลังทำอยู่เพื่อแชร์โค้ดพื้นฐานระหว่างกัน รหัสฐานได้รับการอัปเดตบ่อยครั้งและการอัปเกรดสามารถเกิดขึ้นได้ในทุกโครงการโดยทั้งหมดจะได้รับการอัปเดตในที่สุด ฉันพบปัญหาที่คอมไพล์รายงานว่าทรีย่อยของฉันเป็นเวอร์ชันล่าสุด แต่ดันถูกปฏิเสธ ตัวอย่างเช่น: #! git subtree pull --prefix=public/shared project-shared master From github.com:**** * branch master -> FETCH_HEAD Already up-to-date. ถ้าฉันดันฉันควรจะได้รับข้อความว่าไม่มีอะไรให้ผลักดัน ... ใช่ไหม? ขวา? :( #! git subtree push --prefix=public/shared project-shared master git push using: project-shared master To git@github.com:*** ! [rejected] 72a6157733c4e0bf22f72b443e4ad3be0bc555ce -> master (non-fast-forward) error: failed …
88 git  git-subtree 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.