คุณควรมอบ. gitignore ให้กับ repos Git หรือไม่?


496

คุณคิดว่าเป็นการดีที่จะยอมรับ. gitignore เป็น Git repo หรือไม่?

บางคนไม่ชอบ แต่ฉันคิดว่ามันดีเพราะคุณสามารถติดตามประวัติของไฟล์ ไม่ใช่เหรอ


38
ถ้าไม่ใช่คุณก็ใส่. gitignore ใน. gitignore ...
23411

เป็นไปได้ที่ซ้ำกันของละเว้นไฟล์.
gignignore

คำตอบ:


488

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


137
+1 สามารถพูดถึง "สิ่งส่วนตัว" ใน$GIT_DIR/info/excludeหรือ~/.gitconfigไฟล์ตามความเหมาะสม
WReach

5
หากคุณมีไฟล์อยู่แล้วและคุณต้องการเพิกเฉยมัน Git จะไม่เพิกเฉยต่อไฟล์หากคุณเพิ่มกฎในภายหลัง ในกรณีดังกล่าวคุณต้องยกเลิกการติดตามไฟล์ก่อนโดยรันคำสั่งต่อไปนี้ในเทอร์มินัลของคุณ:git rm --cached FILENAME
eli-bd

133

คุณมักจะทำ.gitignoreกระทำ ในความเป็นจริงฉันไปไกลโดยส่วนตัวเพื่อให้แน่ใจว่าดัชนีของฉันสะอาดอยู่เสมอเมื่อฉันไม่ได้ทำงานอะไร ( git statusไม่ควรแสดงอะไรเลย)

มีหลายกรณีที่คุณต้องการเพิกเฉยต่อสิ่งที่ไม่เฉพาะเจาะจงในโครงการ ตัวอย่างเช่นตัวแก้ไขข้อความของคุณอาจสร้าง*~ไฟล์สำรองข้อมูลอัตโนมัติหรืออีกตัวอย่างหนึ่งคือ.DS_Storeไฟล์ที่สร้างโดย OS X

ฉันว่าถ้าคนอื่นบ่นเกี่ยวกับกฎเหล่านั้นที่ทำให้คุณยุ่งเหยิง.gitignoreปล่อยให้พวกเขาออกไปและวางไว้ในไฟล์ที่ไม่รวมส่วนกลาง

โดยค่าเริ่มต้นไฟล์นี้จะอยู่ใน$XDG_CONFIG_HOME/git/ignore(ค่าเริ่มต้น~/.config/git/ignore) แต่ตำแหน่งนี้สามารถเปลี่ยนแปลงได้โดยการตั้งค่าcore.excludesfileตัวเลือก ตัวอย่างเช่น:

git config --global core.excludesfile ~/.gitignore

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


14
คุณสามารถเพิ่ม# some commentบรรทัดลงใน.gitignoreไฟล์ได้ตลอดเวลาเพื่ออธิบายสาเหตุที่คุณไม่สนใจบางสิ่ง แสดงความคิดเห็นทุกเส้นเป็นบิตของ overkill แต่ฉันมีมีส่วนที่มีป้ายกำกับ# IDE (Eclipse), และ# OS (Mac OS X) # Generated (Perl)ด้วยวิธีนี้ถ้าใครบางคนต้องการใช้ระบบปฏิบัติการหรือ IDE ที่แตกต่างกันพวกเขาสามารถเพิ่มส่วนและเราทุกคนสามารถแบ่งปัน
Stuart R. Jefferys

9
ยกนิ้วให้ "ฉันไปไกลโดยส่วนตัวเพื่อให้แน่ใจว่าดัชนีของฉันสะอาดอยู่เสมอเมื่อฉันไม่ได้ทำงานอะไร (สถานะ git ไม่ควรแสดงอะไรเลย)"
SGhosh

4
nb ด้วย Git ที่ทันสมัยค่าเริ่มต้นสำหรับการcore.excludesfileเป็น~/.config/git/ignoreไปตามข้อกำหนดไดเรกทอรีฐาน XDG
Jakub Narębski

1
+1 สำหรับทั่วโลก.gitignore- เป็นประโยชน์อย่างมากเมื่อคนที่คุณทำงานด้วยไม่เห็นด้วยกับเนื้อหาของ.gitignoreไฟล์ที่ถูกพุชหรือไม่ว่าพวกเขาควรจะถูกผลักหรือไม่และเราทุกคนใช้สภาพแวดล้อม dev ที่แตกต่างกันมากมาย
Krease

1
davidwalsh.name/global-gitignoreข้อมูลเพิ่มเติมเกี่ยวกับการเพิกเฉยต่อโลก
Frode Akselsen

11

ฉันใส่คอมมิชชัน. gitignore ซึ่งเป็นความอนุเคราะห์ต่อผู้อื่นที่อาจสร้างโครงการของฉันที่ได้รับไฟล์ต่อไปนี้และควรถูกละเว้น

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

ดังนั้นในโครงการของฉันฉันอาจมีไดเรคทอรีย่อยของ bin ที่มีไฟล์เรียกทำงานที่สร้างขึ้นทั้งหมด จากนั้นฉันจะให้ makefile ของฉันสร้าง. gignignore สำหรับไดเรกทอรี bin นั้น และในไดเรกทอรีชั้นนำ. gitignore ที่แสดงรายการ bin / .gitignore อันแรกคือที่ฉันเช็คอิน


0

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

ดังนั้นใช่ทำ. gitignore ของคุณ แต่ไม่ใช่ก่อนที่คุณจะแน่ใจว่ามันจะไม่เปลี่ยนแปลงมากนักหลังจากนั้น


-6

มันเป็นแนวปฏิบัติที่ดี.gitignore ในการสร้างผลิตภัณฑ์อย่างน้อย (โปรแกรม, * .o เป็นต้น)


11
ที่ไม่ได้ตอบคำถาม: ควร.gitignore ตัวเองเป็น " .gitignore'd"?
Charles Wood

6
ให้ความสนใจนั่นไม่ใช่คำถามและสิ่งนี้จะตอบสิ่งที่ถูกถาม: "เป็น [มัน] เป็นวิธีปฏิบัติที่ดีในการกระทำ. gitignore ให้เป็น repo Git"
papercowboy

5
@cayuu ฉันเชื่อว่าคำตอบบอกว่า "มันเป็นวิธีปฏิบัติที่ดีสำหรับ. gignignore" xyz ฉันไม่เห็นว่าจะตอบคำถามได้อย่างไร คำถามคือถ้า. gignignore ควรควบคุมเวอร์ชันหรือไม่
nightograph
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.