“ คุณอยู่ในสาขาที่ยังไม่เกิด” เมื่อเพิ่มโมดูลย่อย git


118

ฉันกำลังพยายามเพิ่มโมดูลย่อยบางส่วนใน.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 เดียวกันไปยังไดเร็กทอรีทดสอบ (ไม่ใช่ผ่านคำสั่งโมดูลย่อย) มันจะทำงานได้ดีและสร้างไฟล์ที่ต้องการ

คำตอบ:


212

ในการแก้ไขข้อผิดพลาดนั้นคุณควรลบโฟลเดอร์ที่มีเส้นทางเดียวกันไปยังโมดูลย่อยภายใน.git/modules/ไดเร็กทอรี ข้อผิดพลาดนี้อาจเกิดขึ้นเมื่อ url ไม่ถูกต้องสำหรับโมดูลย่อยเป็นครั้งแรกเมื่อมีการเพิ่มโมดูลย่อย


2
ขอบคุณที่ทำเคล็ดลับ ในตอนแรกไม่ชัดเจนสักนิดว่าตั้งแต่ฉันโคลนไป.vim/bundle/vim-scalaยังเส้นทางที่จะลบคือ.git/modules/.vim/bundle/vim-scala
matt b

2
หากคุณใช้ windows โปรดทราบว่าไดเร็กทอรีภายใต้. git / module อาจไม่ปรากฏขึ้นจนกว่าคุณจะdir /AH
paxos1977

13
หลังจากที่ผมเห็นลบ.git/modules/path/to/submoduleไดเรกทอรีและพยายามที่จะเพิ่มอีก submodule ที่ผมได้รับข้อผิดพลาดเส้นทางต่อไปนี้จะถูกละเว้นโดยหนึ่งในไฟล์ .gitignore ของคุณ: เส้นทาง
Drew Noakes

1
@Drew Noakes ลบ. vim / bundle / vim-scala ที่สร้างขึ้นหลังจากเรียกใช้ git submodule เพิ่มครั้งแรก
Piotr Król

บน windows คุณยังสามารถใช้ตัวเลือก Windows Explorer (ในที่เดียวกับที่คุณจะเลือกดูนามสกุลไฟล์) เพื่อดูโฟลเดอร์ที่ซ่อนอยู่ใน GUI และลบออก
user83358

13

คุณต้องเพิ่มโมดูลย่อยภายใน repo ที่มีอยู่ repo นั้นจะต้องอยู่ในสถานะที่จะเพิ่มและยอมรับลิงก์โมดูลย่อยได้และ repo โมดูลย่อยเองต้องมีการคอมมิตเพื่อตรวจสอบ

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

หาก repo ด้านในไม่ว่างเปล่าให้ตรวจสอบ repo ที่คุณต้องการมีโมดูลย่อย เปลี่ยนเป็นไดเร็กทอรีเดียวกับที่คุณgit submodule addเรียกใช้และเรียกใช้git statusและgit branchเพื่อตรวจสอบว่า repo ของคุณมีการสร้างสาขาอย่างน้อยหนึ่งสาขาและไม่ได้อยู่ในสถานะแปลก ๆ


ฉันได้ตรวจสอบสิ่งเหล่านี้ทั้งหมดแล้ว เมื่อฉันตรวจสอบ repo ที่ต้องการไปยังไดเร็กทอรีอื่นมันมีไฟล์จำนวนมากและmasterสาขา ที่เก็บที่ฉันพยายามเพิ่มอันนี้เป็นโมดูลย่อยอยู่ในmasterสาขาไม่มีปัญหาชัดเจน (สถานะส่งคืนไฟล์ที่แก้ไขบางไฟล์ แต่นั่นคือทั้งหมด) และที่แปลกที่สุดคือฉันสามารถเพิ่มโมดูลย่อยอื่น ๆ ให้กับที่เก็บนี้ได้ .
matt b

นอกจากนี้ยังแปลก: หลังจากที่fatalคำเตือนจาก OP ของฉันใบคอมไพล์ dir .vim/bundle/vim-scalaว่างเปล่าที่ ฉันสังเกตด้วยว่าแม้ว่า.gitmodulesจะไม่ถูกแตะต้อง แต่ก็เพิ่มบางบรรทัดที่อ้างถึง repo ของ github.com นี้.git/configแต่หลังจากลบสิ่งเหล่านั้นออกฉันก็ยังคงได้รับfatalข้อความแสดงข้อผิดพลาดเดียวกัน
matt b

7
+1 อ๊าก! This guy suggests this is fixable by just running the same submodule add command again.. ฉันต่อสู้กับปัญหานี้พยายามหาคำตอบที่สมเหตุสมผลและในที่สุดก็แก้ไขได้ นี่ใช้สำหรับ git 1.8.0 ภายใต้ MSYS ในขณะที่สร้างโมดูลย่อยจาก BitBucket ดังนั้นหากคุณอยู่ในสถานการณ์เดียวกันให้ลองทำก่อน
Aaron Newton

การเพิ่มสองครั้งก็ใช้ได้ผลกับฉันเช่นกัน แต่ฉันไม่เข้าใจว่าทำไม คำอธิบายใด ๆ
Elise

เพิ่มสองครั้งที่นี่เช่นกัน ฉันชอบที่จะเข้าใจว่าทำไม
Vinicius Dantas

12

ข้อผิดพลาดนี้อาจเกิดขึ้นได้หากคุณกำลังเพิ่มโมดูลย่อยที่ไม่มีmasterสาขา หากคุณต้องการใช้สาขาอื่นเมื่อเพิ่มโมดูลย่อย ( developเช่น) คุณสามารถใช้คำสั่งต่อไปนี้:

git submodule add -b <branch> <repository>

1
ในกรณีของฉัน repo ถูกสร้างขึ้นใหม่ดังนั้นจึงไม่มีไฟล์และสาขาใด ๆ (ว่างเปล่า) git submodule add -b master <repo.git> <folder>ช่วยได้มาก
vladkras

นี่เป็นปัญหาของฉันโมดูลย่อยของฉันมีเพียง 2 สาขาเท่านั้นไม่มีทางmasterแก้ปัญหาของคุณที่เหมาะกับฉัน
Guerneen4

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