* เป็น 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 เพื่อตรวจสอบการเปลี่ยนแปลงของคุณ และเลือกและเลือกโปรแกรมแก้ไขที่คุณต้องการเพิ่ม