ฉันจะตรวจสอบเวอร์ชันเฉพาะของโมดูลย่อยโดยใช้ 'git submodule' ได้อย่างไร


124

ฉันจะเพิ่มโมดูลย่อย Git สำหรับแท็กหรือคอมมิตเฉพาะได้อย่างไร


คำตอบ:


167

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

$ cd submodule
$ git checkout v2.0
Previous HEAD position was 5c1277e... bumped version to 2.0.5
HEAD is now at f0a0036... version 2.0

git-status ในที่เก็บพาเรนต์จะรายงานทรีสกปรก:

# On branch dev [...]
#
#   modified:   submodule (new commits)

เพิ่มไดเร็กทอรีโมดูลย่อยและคอมมิตเพื่อจัดเก็บตัวชี้ใหม่


14
หลังจากที่ฉันใช้ repo หลักกับสาขา / เวอร์ชันของโมดูลย่อยที่เฉพาะเจาะจงแล้วผู้อื่นสามารถชำระเงินของโมดูลย่อยเวอร์ชันเดียวกันในอนาคตได้หรือไม่ หรือต้องระบุด้วยตนเองอีกครั้ง?
QZHua

@QZHua: ฉันทดลองด้วยตัวเองและดูเหมือนว่ารหัสการกระทำของโมดูลย่อยจะถูกเก็บรักษาไว้เมื่อมีการโคลนพาเรนต์
Psychonaut

37

ขั้นตอนที่ 1: เพิ่มโมดูลย่อย

   git submodule add git://some_repository.git some_repository

ขั้นตอนที่ 2: แก้ไขโมดูลย่อยเป็นคอมมิตเฉพาะ

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

   git checkout -b some_branch origin/some_branch

ตอนนี้โมดูลย่อยได้รับการแก้ไขในสาขาการพัฒนาแทนที่จะเป็น HEAD of master

จากชายสองคนเถียง - Tie Git submodules ไปโดยเฉพาะการกระทำหรือสาขา


20
ใช้งานง่ายกว่าgit submodule add -b some_branch git://some_repository.git some_repository
Caumons

15
ในขณะนี้ดูเหมือนว่าจะไม่git submodule add -bสามารถใช้แท็กหรือ sha1hash ได้ สามารถทำได้เฉพาะสาขา
CMCDragonkai

มีปัญหาในตัวติดตามปัญหา Git หรือไม่ มีใครกรุณาโพสต์ URL เพื่อให้เราติดตามได้ไหม ขอบคุณ
colan

คำแนะนำ @colan สำหรับข้อบกพร่องการรายงานอยู่ที่git-scm.com/community แต่-bการสนับสนุนสาขาและไม่แท็กหรือคอมมิต shas เป็นคุณสมบัติที่ไม่ใช่จุดบกพร่อง (อันที่จริง-bคือชวเลข--branch)
henry

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