ไม่สามารถเพิ่มโฟลเดอร์ในคอมไพล์


21

ฉันเพิ่มโฟลเดอร์ใหม่ (จริง ๆ แล้วฉันได้โคลนจาก repo อื่นและลืมไป) จากนั้นฉันก็ทำการเปลี่ยนแปลงบางอย่างที่นั่น นอกจากนี้ฉันได้ทำการเปลี่ยนแปลงมากมายในที่อื่นเมื่อฉันพยายามเพิ่มคอมไพล์

# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   protected/ext/SpecificFolder (modified content)
#

จากนั้นฉันจำได้ว่าอาจมีโฟลเดอร์. git (เพราะก่อนหน้านี้ฉันทำ git clone ที่นั่น) ฉันไปที่โฟลเดอร์นั้นและลบไฟล์ที่ไม่จำเป็น (โฟลเดอร์) และโฟลเดอร์. git ด้วย ฉันตรวจสอบสถานะคอมไพล์ไม่มีอะไรแปลก จากนั้นส่งและชำระเงินไปยังสาขาอื่นและทันใดนั้นฉันก็เข้าใจว่าโฟลเดอร์นี้ไม่ได้ถูกเพิ่มในการส่งครั้งล่าสุด เพิ่มโฟลเดอร์จริงๆแล้ว แต่ไฟล์ที่อยู่ภายในนั้นถูกข้ามไป ตอนนี้แม้ว่าฉันจะพยายามทำgit addเพื่อโฟลเดอร์นั้นไม่มีอะไรเกิดขึ้นและgit statusไม่แสดงการเปลี่ยนแปลงใด ๆ :(

ฉันจะทำอย่างไร


6
ในกรณีที่คนอื่นจบลงในหน้านี้ด้วยปัญหาที่ฉันประสบ: ฉันไม่สามารถเพิ่มไฟล์ในโฟลเดอร์ย่อยไปยัง Git ต่อมาฉันพบว่าโฟลเดอร์ย่อยมีที่.gitเก็บของตัวเองและไฟล์ต่าง ๆ ได้รับการเพิ่มเข้าไปในที่เก็บนั้นแทนที่จะเป็นที่เก็บในโฟลเดอร์หลัก แม้แต่ใน Git GUI โฟลเดอร์ย่อยนั้นก็ปรากฏเป็นไฟล์แทนที่จะเป็นโฟลเดอร์
Nav

คำตอบ:


29

Git ไม่ได้ติดตามไดเรกทอรี แต่เป็นเพียงไฟล์ภายใน

ดูเหมือนว่าคุณอาจมีรูปแบบการเพิกเฉยที่addไม่ได้ทำอะไรเลย คุณสามารถดูไฟล์ที่ถูกละเว้นด้วยgit status --ignored; พวกเขาสามารถติดตามได้ด้วยgit add --force protected/ext/SpecificFolder


1
ไม่มันไม่ได้อยู่ในgit status --ignoredอย่างใดฉันคิดว่ามันเกี่ยวข้องกับ submodule
user1016265

1
คำสั่งนี้เป็นผู้ช่วยชีวิต หากไม่มีมันฉันจะไม่เคยคิดออกว่าไดเรกทอรีใดถูกเพิกเฉย
IgorGanapolsky

ว้าว ..... ฉันรู้สึกงี่เง่าที่อ่านข้อเท็จจริงนี้หลังจากใช้ git มาระยะหนึ่งแล้ว ^^
XandruCea

1
อ่าในที่สุด นี่เป็นปัญหาของฉัน ฉันได้คัดลอก. gignignore จากผู้ปกครองและไปยัง submodules ฉันเพิกเฉย 'config /' และต่อมาฉันสร้างไดเรกทอรีภายใต้ source dir ชื่อ config ไม่สามารถเพิ่มแหล่งที่มา แก้ไขปัญหาได้แล้วในตอนนี้ขอบคุณ :-)
Avec

7

Git ไม่ได้ติดตามไดเรกทอรีว่าง หากคุณมีโปรเจ็กต์ย่อยหลายชั้นเลเยอร์ไดเรกทอรี git จะติดตามไดเรกทอรี w / ไฟล์ในนั้น หากไม่เป็นเช่นนั้นจะเป็นที่เก็บแบบแบนหนึ่งไฟล์


ว้าวนี่มันช่างเป็นอะไรที่เรียบง่าย ฉันอ่านมันแล้วก็ไป "โอ้พระเจ้านั่นแหละ"
ไบรอันพูดว่า Reinstate Monica

3

ฉันบังเอิญทำสิ่งที่ผู้ใช้รายนี้ทำ: เพิ่มที่เก็บ git ที่มีอยู่ภายในอีกที่หนึ่ง

อาการคือคอมไพล์รับรู้ว่าไดเรกทอรีเป็นไฟล์และทำให้ไม่สามารถเพิ่มไฟล์ของไดเรกทอรี

เพื่อแก้คำถามนั้นฉันลบ.gitโฟลเดอร์ในโฟลเดอร์ย้ายโฟลเดอร์นั้นในไดเรกทอรีอื่นลบดัชนีลบไดเรกทอรีที่อยู่ใน repo ของฉันแล้วฉันสามารถเพิ่มไดเรกทอรีได้อย่างถูกต้อง

คุณธรรมของสิ่งนี้คือ: อย่าเพิ่มที่เก็บในที่อื่น


5
นอกจากนี้ยังสามารถแก้ไขได้ด้วยการวิ่งgit rm --cached path_to_submodule
Victor Marchuk


0

ลองเพิ่มไฟล์ในไดเรกทอรีนั้น

$ git add my-dir/index.html

หากคุณเห็นผลลัพธ์เช่นด้านล่าง:

The following paths are ignored by one of your .gitignore files:
my-dir/index.html
Use -f if you really want to add them.
fatal: no files added

มีกฎใน gitignores ของคุณที่ป้องกันไม่ให้คุณเพิ่มไดเรกทอรีนั้น


0

ฉันพบผลข้างเคียงที่คล้ายกันหลังจากพยายามแปลงสิ่งที่เคยเป็น submodule เป็นโฟลเดอร์ย่อยปกติ

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

การพยายามเพิ่มไฟล์ภายในไฟล์นั้นโดยเฉพาะทำให้ฉันได้รับคำเตือนที่ดี

git add sites/all/modules/contrib/transclusion/transclusion.module 
fatal: Pathspec 'sites/all/modules/contrib/transclusion/transclusion.module' is in submodule 'sites/all/modules/contrib/transclusion'
  • ดังนั้นมันจึงเกี่ยวข้องกับวิธีที่ฉันพยายามลบ submodule เก่าด้วยตนเองเนื่องจากไม่มีขั้นตอนการทำเอกสารที่ถูกต้องสำหรับการทำอย่างถูกต้อง - ฉันเพิ่งลบออกจาก. gitmodules สิ่งอื่น ๆ ที่จำเป็นในการสร้างเงาของ submodule
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.