*
เป็น bash glob มันจะขยายไปยังไฟล์ทั้งหมดในไดเร็กทอรีที่คุณอยู่ ยกเว้น dotfiles (ไฟล์ที่ขึ้นต้นด้วยจุด (.
)).
.
หมายถึงไดเรกทอรีปัจจุบัน
ผลลัพธ์อาจแตกต่างกันมากขึ้นอยู่กับเนื้อหาในไดเร็กทอรีของคุณและหากคุณมี .gitignore
ไฟล์.
พิจารณาว่าคุณมีไฟล์และไดเร็กทอรีต่อไปนี้ในไดเร็กทอรีของคุณ:
.dotfile-ที่ต้องกระทำ
.git/
.gitignore
บางไฟล์ที่อยู่ใน gitignore
ไฟล์อื่น ๆ
เมื่อคุณวิ่ง คอมไพล์เพิ่ม *
, glob ถูกขยายก่อนที่คำสั่ง git จะทำงาน ดังนั้นสิ่งที่คำสั่ง git ได้รับมีดังนี้:
git เพิ่มไฟล์บางไฟล์ที่อยู่ใน gitignore ไฟล์อื่น ๆ
สิ่งนี้ทำให้เกิดปัญหาสี่ประการที่นี่
- Git จะบ่นว่า
บางไฟล์ที่อยู่ใน gitignore
ไม่สามารถเพิ่มได้และจะขอให้คุณเพิ่มแรง (-ฉ
) อาร์กิวเมนต์ถ้าคุณต้องการเพิ่มจริงๆ
- ทั้งสอง
.dotfile-ที่ต้องกระทำ
และ .gitignore
ไม่ได้เพิ่มเป็น *
ไม่ขยายเป็น dotfiles
- หากคุณลบไฟล์ในไดเร็กทอรีที่คุณอยู่
*
ไม่สามารถขยายไปยังไฟล์เหล่านั้นได้ ดังนั้นไฟล์ที่ถูกลบจะไม่ถูกจัดฉาก
- หากคุณเปลี่ยนชื่อไฟล์ในไดเร็กทอรีที่คุณอยู่
*
ไม่สามารถขยายไปยังชื่อเก่า แต่จะขยายไปยังชื่อใหม่ ดังนั้นสิ่งที่ git จะเห็นคือคุณเพิ่มไฟล์ใหม่ และเนื่องจากชื่อเก่าไม่ได้ถูกจัดฉาก คุณจึงลงเอยด้วยไฟล์เดิมที่มีอยู่สองครั้ง โดยใช้ชื่อเก่าและชื่อใหม่
อย่างไรก็ตามการวิ่ง คอมไพล์เพิ่ม .
บอกให้ git เพิ่มไดเร็กทอรีปัจจุบันที่คุณอยู่โดยไม่ระบุว่าจะเพิ่มไฟล์ใด ในกรณีนี้ git จะตรวจสอบ .gitignore
ไฟล์และเพิ่มไฟล์ทั้งหมดที่ไม่ได้กล่าวถึงซ้ำ .gitignore
.
สรุป:
- คุณควรใช้
คอมไพล์เพิ่ม .
ไม่ คอมไพล์เพิ่ม *
.
ดียิ่งขึ้น:
- ใช้
git เพิ่มเต็ม / ไฟล์ / เส้นทาง
คุณจึงไม่เพิ่มสิ่งที่ไม่พร้อมจะเพิ่มโดยไม่ตั้งใจ
และดียิ่งขึ้น:
- ใช้
คอมไพล์เพิ่ม -p
เพื่อตรวจสอบการเปลี่ยนแปลงของคุณ และเลือกและเลือกโปรแกรมแก้ไขที่คุณต้องการเพิ่ม