. gitignore คืออะไร


212

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

คำตอบ:


175

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

คุณสามารถค้นหารายละเอียดที่นี่


ดังนั้นถ้าคุณสร้าง .gitignore ในพื้นที่เก็บข้อมูลใหม่เกี่ยวกับ github.com แล้วทำ init คอมไพล์และคอมไพล์เพิ่ม บนเครื่องคอมพิวเตอร์ของคุณ - ยังไม่ได้เชื่อมต่อกับ. gignignore เนื่องจากมันยังไม่ได้เชื่อมต่อกับที่เก็บนั้น - มันทำงานอย่างไร? มันจะมีผลเมื่อฉันทำการคอมไพล์? หรือ?
Xonatron

สิ่งที่_._gitignoreใช้? มันใช้เฉพาะเมื่อgitignore อยู่ใน Dir ย่อย?
Saikat Chakrabortty

ดังนั้นมันจึงยังคงอยู่ในพื้นที่ แต่ไม่ได้รับการผลักดันให้กำเนิด? ดังนั้นหากผู้ใช้บางคนดาวน์โหลด github repo ไฟล์ลับนั้นจะถูกดาวน์โหลดด้วยหรือไม่
พบกับ Zaveri

สิ่งที่ไม่ละเลยเฉลี่ย? ใคร / เมื่อไรที่ไม่สนใจ? ฉันรู้ว่าคำว่าละเว้นนั้นหมายถึงอะไร แต่ฉันไม่พบคำอธิบายที่ชัดเจนว่าคำว่าละเว้นนั้นหมายถึงอะไรในบริบทของ Git เห็นได้ชัดว่าเป็นคำที่เข้าใจได้อย่างสมบูรณ์โดยคนที่เข้าใจ แต่สิ่งที่เขียนเพื่อกำหนดสิ่งสำหรับคนที่ไม่ได้รู้ว่ามันต้องอธิบายคำศัพท์ทั้งหมดที่มีคำจำกัดความที่ไม่ซ้ำกันกับบริบท
user34660

1
@ user34660 ไม่สนใจหมายความว่า - Git จะไม่ติดตามการเปลี่ยนแปลงในไฟล์ที่ระบุโดย (รูปแบบ) ใน.gitignoreไฟล์ แม้ว่าคุณจะเปลี่ยนแปลงสิ่งเหล่านั้น แต่คอมไพล์จะไม่แสดงเป็นการแก้ไข
Mureinik

42

นี่คือรายการไฟล์ที่คุณต้องการให้คอมไพล์ละเว้นในไดเรกทอรีงานของคุณ

สมมติว่าคุณใช้ Mac และคุณมีไฟล์. DS_Store ในไดเรกทอรีทั้งหมดของคุณ คุณต้องการให้คอมไพล์ละเว้นมันดังนั้นคุณจึงเพิ่ม. DS_Store เป็นบรรทัดใน. gitignore และอื่น ๆ

เอกสาร git จะบอกทุกสิ่งที่คุณจำเป็นต้องรู้: http://git-scm.com/docs/gitignore


2
.DS_Storeในที่สุดสถานการณ์ของคุณสะท้อนกับฉันในขณะที่ฉันคิดว่าฉันไม่ได้ยึดติดกับแนวคิดนี้เพราะฉันยังไม่จำเป็นต้องใช้ในโครงการ ขอบคุณ. ฉันลงเอยด้วยการใช้สิ่งนี้เป็นจุดเริ่มต้นเนื่องจากฉันใช้ระบบปฏิบัติการที่แตกต่างกันทั้งหมดโดยเฉพาะใน# OS generated files #ส่วนของการสังเกต
phoenixlaef

2
ฉันรู้ว่าฉันมาสายนี้ แต่ขอบคุณ @AndyLester! ฉันเป็นสามเณรเมื่อพูดถึงการเขียนโปรแกรมและ Github ฉันพบคำตอบจำนวนมากที่เขียนเพื่อตอบคำถามประเภทนี้ซึ่งเต็มไปด้วยคำศัพท์ที่สามเณรอาจไม่เข้าใจ (เช่นผลิตภัณฑ์การรวบรวมไฟล์ชั่วคราว IDEs สร้าง .... สิ่งที่ h @ ll เป็นสิ่งเหล่านี้!) อย่างไรก็ตามคำอธิบาย Mac ของคุณสมบูรณ์แบบในความเรียบง่ายหรูหรา!
Vesuccio

21

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

นอกจากนี้ที่สำคัญ git statusยังเป็นหนึ่งในคำสั่งที่ใช้บ่อยที่สุดซึ่งคุณต้องการgit statusแสดงรายการไฟล์ที่ถูกแก้ไข

คุณต้องการให้git statusรายการของคุณดูสะอาดจากไฟล์ที่ไม่ต้องการ ตัวอย่างเช่นฉันเปลี่ยนa.cpp, b.cpp, c.cpp, d.cpp & e.cppฉันต้องการให้ฉันgit statusแสดงรายการต่อไปนี้:

git status
a.cpp
b.cpp
c.cpp
d.cpp
e.cpp

ฉันไม่ต้องการgit statusแสดงรายการไฟล์ที่มีการเปลี่ยนแปลงเช่นนี้กับไฟล์ออบเจกต์และไฟล์จากโฟลเดอร์สร้าง

git status
a.cpp
b.cpp
c.cpp
d.cpp
e.cpp
.DS_Store
/build/program.o
/build/program.cmake

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

ต่อไปนี้เป็นของฉัน.gitignoreเพื่อหลีกเลี่ยงการยอมรับไฟล์ที่ไม่จำเป็น

/*.cmake
/*.DS_Store
/.user
/build

7

มีไฟล์ที่คุณไม่ต้องการให้ Git เช็คอิน Git เห็นทุกไฟล์ในสำเนาการทำงานของคุณเป็นหนึ่งในสามสิ่ง:

  1. ติดตาม - ไฟล์ที่มีการจัดฉากหรือถูกคอมมิทไว้ก่อนหน้านี้;
  2. untracked - ไฟล์ที่ยังไม่ถูกจัดฉากหรือถูกคอมมิท หรือ
  3. ละเว้น - ไฟล์ที่ Git ได้รับการบอกกล่าวให้ละเว้นอย่างชัดเจน

ไฟล์ที่ถูกเพิกถอนมักจะเป็นสิ่งประดิษฐ์ที่สร้างขึ้นและไฟล์ที่สร้างด้วยเครื่องซึ่งสามารถได้รับมาจากแหล่งเก็บข้อมูลของคุณหรือไม่ควรทำการยืนยัน ตัวอย่างทั่วไป ได้แก่ :

  • แคชการพึ่งพาเช่นเนื้อหาของ/node_modulesหรือ/packages
  • รหัสเรียบเรียงเช่น.o, .pycและ.classไฟล์
  • ไดเรกทอรีสร้างเอาท์พุทเช่น/bin, /outหรือ/target
  • ไฟล์ที่สร้างขึ้นที่รันไทม์เช่น.log, .lockหรือ.tmp
  • ไฟล์ระบบที่ซ่อนอยู่เช่น.DS_StoreหรือThumbs.db
  • ไฟล์ config ส่วนบุคคล IDE เช่น .idea/workspace.xml

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


5

วัตถุประสงค์หลักของ. gitignore - ดังนั้นคุณหลีกเลี่ยงการเพิ่มไฟล์ที่ไม่เกี่ยวข้อง ฯลฯ Git

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

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