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

โมดูลย่อยอนุญาตให้คุณเก็บที่เก็บ Git เป็นไดเรกทอรีย่อยของที่เก็บ Git อื่น

2
Git โมดูลย่อยภายในโมดูลย่อย (โมดูลย่อยที่ซ้อนกัน)
เป็นไปได้หรือไม่ที่โมดูลย่อย git จะสร้างจากโมดูลย่อย git อื่น ๆ และ repo super git เพื่อดึงเนื้อหาสำหรับโมดูลย่อยแต่ละโมดูล ฉันได้พยายามทำสิ่งนี้โดยใช้วิธีการที่ชัดเจน / ไร้เดียงสาในการสร้าง git repo ที่มีโมดูลย่อยหลายตัว จากนั้นเพิ่ม git repo นี้ไปยัง git repo อื่นเป็นโมดูลย่อย จากนั้นพยายามที่จะดึงจากไดเรกทอรีรากของ repo คอมไพล์ซุปเปอร์โดยแล้วgit submodule init git submodule updateแต่ไม่สามารถดึงข้อมูลโมดูลย่อยได้

1
Git เก็บ SHA1 ของการกระทำเพื่อ submodule ที่ไหน?
ฉันรู้ว่าเมื่อคุณเพิ่ม submodule ไปยังที่เก็บ git มันจะติดตามการกระทำเฉพาะของ submodule ที่อ้างอิงโดย sha1 ฉันกำลังพยายามหาที่เก็บค่า sha1 นี้ .gitmodulesและ.git/configไฟล์แสดงเฉพาะเส้นทางสำหรับ submodule แต่ไม่ sha1 ของการกระทำ การอ้างอิงgit-submodule (1)พูดถึงgitlinkรายการเท่านั้นและการอ้างอิง gitmodules (5)ไม่ได้พูดอะไรเกี่ยวกับเรื่องนี้เช่นกัน
141 git  git-submodules  sha 

1
การติดตามโมดูลย่อยของคอมไพล์ล่าสุด
เรากำลังย้ายโปรเจ็กต์ (ขนาดใหญ่) ไปยังคอมไพล์และเรากำลังคิดที่จะใช้โมดูลย่อย แผนของเราคือการมีหัวหน้าที่แตกต่างกันสามแบบในโครงการซูเปอร์โปรเจ็กต์: การเปิดตัวเสถียรล่าสุด หัวหน้าโครงการจะจัดการกับสาขาที่ออกและมีเสถียรภาพ พวกเขาจะย้ายโมดูลย่อยตามต้องการ ประเด็นคือหัว "ล่าสุด" เราต้องการให้ส่วนหัว "ล่าสุด" ของ superproject ติดตามสาขาหลักของโมดูลย่อยทั้งหมด (โดยอัตโนมัติ) และจะเป็นการดีเช่นกันหากจะแสดงประวัติของการกระทำทั้งหมดกับโมดูลย่อย ฉันได้ดู gitslave แล้ว แต่มันไม่ใช่สิ่งที่เราต้องการ ข้อเสนอแนะใด ๆ ?

9
วิธีการทำ submodules คอมไพล์ตื้น?
เป็นไปได้ไหมที่จะมี submodules ตื้น ๆ ? ฉันมี superproject ที่มีหลาย submodules แต่ละอันที่มีประวัติอันยาวนานดังนั้นมันจึงมีความสำคัญมากในการลากประวัติทั้งหมดนั้นโดยไม่จำเป็น ทั้งหมดที่ฉันได้พบคือนี้ยังไม่มีการตอบกระทู้ ฉันควรแฮ็ค git-submoduleเพื่อใช้งานหรือไม่

1
ล้างโฟลเดอร์โมดูลย่อย Git เมื่อโคลน repo
ฉันมีหนึ่ง repo เจ้าภาพที่https://github.com/aikiframework/json ในสำเนาโลคัลของฉันฉันเพิ่มโมดูลย่อยโดยใช้คำสั่ง git submodule add git@github.com:jcubic/json-rpc.git json-rpc จากนั้นฉันก็ทำการกระทำและผลักดันและการเปลี่ยนแปลงจะปรากฏบน GitHub (ฉันสามารถคลิกได้) แต่เมื่อฉันโคลน repo git clone https://github.com/aikiframework/json.git โฟลเดอร์โมดูลย่อย json-rpc ว่างเปล่า ฉันพลาดอะไรไปที่นี่? ฉันลืมอะไรไปหรือเปล่า? ทำไมโฟลเดอร์นั้นว่างเปล่า

2
การผลักดันโมดูลย่อย Git
หากฉันแก้ไขโมดูลย่อยฉันสามารถส่งคอมมิตกลับไปยังจุดเริ่มต้นของโมดูลย่อยได้หรือไม่หรือต้องใช้การโคลน ถ้าโคลนฉันจะเก็บโคลนไว้ในที่เก็บอื่นได้หรือไม่?

6
วิธีการแปลงตัวชี้โมดูลย่อย Git กลับเป็นคอมมิตที่เก็บไว้ในที่เก็บข้อมูล
ฉันมีโมดูลย่อย git ใน repo คอมไพล์หลักของฉัน ตามที่ฉันเข้าใจ repo หลักจะจัดเก็บค่า SHA (ที่ใดที่หนึ่ง ... ) โดยชี้ไปที่การกระทำเฉพาะของโมดูลย่อยที่ "เชื่อมโยงกับ" ผมไปใน submodule git checkout some_other_branchของฉันและพิมพ์ ฉันไม่รู้ว่าฉันมาจากการกระทำใด ฉันต้องการเปลี่ยนกลับตัวชี้เพื่อให้ repo หลักและโมดูลย่อยซิงค์อีกครั้ง สัญชาตญาณแรก (อาจจะไร้เดียงสา) ของฉันคือการพูดgit reset --hardซึ่งดูเหมือนจะใช้ได้กับทุกอย่าง ฉันแปลกใจที่มันไม่ได้ผลกับสถานการณ์นี้ ดังนั้นฉันคิดว่าฉันสามารถพิมพ์git diffบันทึก SHA ID ที่ตัวชี้โมดูลย่อยเคยมีจากนั้นมุ่งหน้าไปยังโมดูลย่อยและgit checkout [SHA ID]... แต่ต้องมีวิธีที่ง่ายกว่านี้แน่ ๆ ? ในขณะที่ฉันยังคงเรียนรู้เกี่ยวกับ git submodules โปรดอย่าลังเลที่จะแก้ไขคำศัพท์ของฉันหากมีคำศัพท์สำหรับแนวคิดที่ฉันไม่รู้

7
ฉันจะจัดการความขัดแย้งกับโมดูลย่อย git ได้อย่างไร
ฉันมี superproject คอมไพล์ที่อ้างถึงโมดูลย่อยหลายโมดูลและฉันกำลังพยายามล็อกขั้นตอนการทำงานเพื่อให้สมาชิกโปรเจ็กต์ที่เหลือของฉันทำงานได้ สำหรับคำถามนี้ช่วยบอก superproject ของฉันเรียกว่าsuperyและ submodule subbyที่เรียกว่า (จากนั้นเป็นการลดความซับซ้อนของสิ่งที่ฉันกำลังพยายามทำ ... ฉันไม่ได้ใช้กิ่งก้านสำหรับเวอร์ชันจริงๆ แต่ฉันคิดว่ามันจะง่ายที่สุดในการจัดวางเป็นคำถาม) สาขาหลักของฉันsuperyมีแท็กv1.0ของโครงการ git ที่subbyอ้างถึงเป็นโมดูลย่อย สาขาของsuperyเรียกone.oneและเปลี่ยนการอ้างอิงของ submodule ที่จะชี้ไปที่แท็กของv1.1subby ฉันสามารถทำงานในแต่ละสาขาเหล่านี้ได้โดยไม่มีข้อติดขัด แต่ถ้าฉันพยายามอัปเดตone.oneสาขาด้วยการเปลี่ยนแปลงจากmasterสาขาฉันได้รับความขัดแย้งบางอย่างและฉันไม่สามารถแก้ไขได้อย่างไร โดยทั่วไปหลังจากทำงานgit pull . masterในsubbyสาขาไประยะหนึ่งดูเหมือนว่าจะสร้างโมดูลย่อยเพิ่มเติม ก่อนที่จะดึง / รวมฉันได้รับคำตอบที่ต้องการgit submoduleจากone.oneสาขา: $ git checkout master $ git submodule qw3rty...321e subby (v1.0) $ git checkout one.one $ git submodule asdfgh...456d subby (v1.1) แต่หลังจากดึงมันจะเพิ่มโมดูลย่อยเพิ่มเติมเมื่อฉันเรียกใช้git submodule: …

9
Git: ฉันสามารถระงับการแสดงรายการ 'เนื้อหาที่แก้ไข' / รายการโมดูลย่อยที่สกปรกในสถานะ diff ฯลฯ ได้หรือไม่
เมื่อสักครู่ (ประมาณรุ่น 1.6.x ฉันคิดว่า) git เริ่มตระหนักถึงการเปลี่ยนแปลงภายในโมดูลย่อย ที่ทำหน้าที่รบกวนฉันเท่านั้น: ผู้ขายสถานะ $ git | grep แก้ไข: # modified: ผู้ขาย / ราง (เนื้อหาที่แก้ไข) ผู้ขายต่าง $ git / แตกต่าง - git a / ผู้ขาย / ราง b / ผู้ขาย / ราง --- ก / ผู้ขาย / ราง +++ ข / ผู้ขาย / ราง @@ -1 …

5
จะแยกไดเร็กทอรีย่อย git และสร้างโมดูลย่อยจากไดเร็กทอรีได้อย่างไร
ฉันเริ่มโครงการเมื่อหลายเดือนก่อนและเก็บทุกอย่างไว้ในไดเรกทอรีหลัก ในไดเร็กทอรีหลักของฉัน "Project" มีไดเร็กทอรีย่อยหลายไดเร็กทอรีที่มีสิ่งที่แตกต่างกัน: Project / paper มีเอกสารที่เขียนใน LaTeX Project / sourcecode / RailsApp มีแอพทางรถไฟของฉัน "Project" เป็น GITified และมีการคอมมิตทั้งในไดเรกทอรี "paper" และ "RailsApp" ตอนนี้ฉันต้องการใช้ cruisecontrol.rb สำหรับ "RailsApp" ของฉันฉันสงสัยว่ามีวิธีสร้างโมดูลย่อยจาก "RailsApp" โดยไม่เสียประวัติหรือไม่

4
“ คุณอยู่ในสาขาที่ยังไม่เกิด” เมื่อเพิ่มโมดูลย่อย git
ฉันกำลังพยายามเพิ่มโมดูลย่อยบางส่วนใน.vim/bundlesไดเร็กทอรีของฉันและเมื่อฉันพยายามเพิ่ม repo Git นี้ทำให้ฉันมีข้อผิดพลาดแปลก ๆ ที่ฉันไม่เคยเห็นมาก่อน: $ git submodule add -f git://github.com/derekwyatt/vim-scala.git .vim/bundle/vim-scala fatal: You are on a branch yet to be born Unable to checkout submodule '.vim/bundle/vim-scala' มีความคิดอะไรที่ทำให้เกิดสิ่งนี้ได้บ้าง? ถ้าฉันโคลน repo เดียวกันไปยังไดเร็กทอรีทดสอบ (ไม่ใช่ผ่านคำสั่งโมดูลย่อย) มันจะทำงานได้ดีและสร้างไฟล์ที่ต้องการ

6
แปลงโฟลเดอร์ Git เป็นโมดูลย่อยย้อนหลังหรือไม่
บ่อยครั้งที่คุณกำลังเขียนโปรเจ็กต์บางประเภทและหลังจากนั้นไม่นานก็เห็นได้ชัดว่าองค์ประกอบบางส่วนของโปรเจ็กต์นั้นมีประโยชน์ในฐานะคอมโพเนนต์แบบสแตนด์อโลน (อาจเป็นไลบรารี) หากคุณมีความคิดนั้นตั้งแต่เนิ่นๆก็มีโอกาสที่รหัสส่วนใหญ่จะอยู่ในโฟลเดอร์ของตัวเอง มีวิธีแปลงหนึ่งในไดเร็กทอรีย่อยในโปรเจ็กต์ Git เป็นโมดูลย่อยหรือไม่? ตามหลักการแล้วสิ่งนี้จะเกิดขึ้นโดยที่โค้ดทั้งหมดในไดเร็กทอรีนั้นถูกลบออกจากโปรเจ็กต์พาเรนต์และโปรเจ็กต์โมดูลย่อยจะถูกเพิ่มเข้ามาแทนที่พร้อมกับประวัติที่เหมาะสมทั้งหมดและโปรเจ็กต์พาเรนต์ทั้งหมดจะชี้ไปที่โมดูลย่อยที่ถูกต้อง .

19
Git จะไม่เริ่ม / ซิงค์ / อัปเดตโมดูลย่อยใหม่
นี่คือส่วนหนึ่งของเนื้อหาใน.gitmodulesไฟล์ของฉัน: [submodule "src/static_management"] path = src/static_management url = git://github.com/eykd/django-static-management.git [submodule "external/pyfacebook"] path = external/pyfacebook url = http://github.com/sciyoshi/pyfacebook.git อย่างไรก็ตาม.git/configมีเพียงรายการแรกเท่านั้น: [submodule "src/static_management"] url = git://github.com/eykd/django-static-management.git โมดูลย่อยที่สอง ( external/pyfacebook) ถูกเพิ่มโดยนักพัฒนารายอื่นในสาขาคุณลักษณะ ตอนนี้ฉันได้รับช่วงการพัฒนาและได้ตรวจสอบสาขาคุณลักษณะแล้ว อย่างไรก็ตาม Git จะไม่ดึงโมดูลย่อยมาให้ฉัน ฉันพยายามแล้ว: git submodule init git submodule update git submodule update --init git submodule sync การถอดคำจำกัดความ submodule ทั้งหมดจากการทำงาน.git/config git submodule …

3
สร้างที่เก็บโมดูลย่อยจากโฟลเดอร์และเก็บประวัติการคอมมิตคอมมิตไว้
ฉันมีเว็บแอปพลิเคชันที่สำรวจเว็บแอปพลิเคชันอื่น ๆ โดยเฉพาะ มีการสาธิตเว็บบางส่วนในdemosโฟลเดอร์และหนึ่งในการสาธิตควรมีที่เก็บของตัวเอง ฉันต้องการสร้างที่เก็บแยกต่างหากสำหรับแอปพลิเคชันสาธิตนี้และทำให้เป็นไฟล์แพคเกจย่อย โมดูลย่อยจากที่เก็บหลักโดยไม่สูญเสียประวัติการกระทำ เป็นไปได้ไหมที่จะเก็บประวัติการคอมมิตจากไฟล์ในโฟลเดอร์ของที่เก็บและสร้างที่เก็บจากมันและใช้มันเป็นโมดูลย่อยแทน

3
ฉันจะย้ายไดเร็กทอรีเดียวจากที่เก็บ git ไปยังที่เก็บใหม่ในขณะที่รักษาประวัติได้อย่างไร
ฉันได้รับสืบทอดที่เก็บ git ที่มีหลายโครงการในไดเรกทอรีแยกกัน ฉันต้องการแยกที่เก็บออกเป็นที่เก็บใหม่แต่ละที่สำหรับแต่ละโปรเจ็กต์จากนั้นให้ที่เก็บหลักมีโปรเจ็กต์เป็นโมดูลย่อย ฉันต้องการดำเนินการทั้งหมดนี้ในขณะที่รักษาประวัติการแก้ไขของแต่ละโครงการถ้าเป็นไปได้ ฉันสามารถโคลนที่เก็บสำหรับแต่ละโปรเจ็กต์และลบโปรเจ็กต์อื่น ๆ ทั้งหมดในแต่ละครั้ง แต่จะมีวิธีที่ดีกว่าในการหลีกเลี่ยงไม่ให้มีประวัติโคลนในที่เก็บโปรเจ็กต์ใหม่

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