git-cache คืออะไรและสิ่งที่เก็บไว้ใน git-cache

Oct 12 2020

ที่จริงฉันอ่านหลาย ๆ อย่างเกี่ยวกับ git

ฉันรู้ว่าฉันสามารถลบแคชโดยgit rm --cached .คำสั่ง แต่ฉันไม่สามารถเข้าใจแนวคิดของคอมไพล์แคช

แคชคืออะไร? และตำแหน่งของแคชใน GIT อยู่ที่ไหน? แคชนี้เก็บไว้ใน RAM หรือในไฟล์? แคชใช้เพื่อปรับปรุงประสิทธิภาพในคอมไพล์หรือไม่?

สิ่งที่เก็บอยู่ในแคช?

คำตอบ

2 torek Oct 12 2020 at 02:55

Git เป็นโปรแกรมที่ค่อนข้างเก่า (15 ปีขึ้นไป) ซึ่งมีหลายส่วนและคำศัพท์ภายในบางส่วนซึ่งไม่ใช่ทั้งหมดที่มีอายุมาก นิพจน์แคชและการสะกดของแฟล็--cachedกเป็นหนึ่งในนั้น ส่วนใหญ่ที่ทันสมัยระยะนิติบุคคลนี้เป็นพื้นที่การแสดงละครซึ่งสะท้อนให้เห็นถึงวิธีการที่คุณใช้ แต่ส่วนใหญ่ที่พบบ่อยในระยะ Git สำหรับนิติบุคคลนี้เป็นดัชนี

ดังนั้นโดยทั่วไปหากมีคนหรือบางสิ่งกล่าวถึงดัชนีพื้นที่การแสดงละครหรือแคชพวกเขาอาจหมายถึงสิ่งเดียวกัน:

ตำแหน่งของแคชในคอมไพล์อยู่ที่ไหน

ใช้git rev-parse --git-dirเพื่อค้นหาไดเร็กทอรี Git ในไดเร็กทอรี Git ให้มองหาไฟล์ชื่อindex. แต่ก่อนที่คุณจะทำเช่นนั้นให้ตรวจสอบตัวแปรสภาพแวดล้อม$GIT_INDEX_FILE: หากถูกตั้งค่าไว้ให้ลองใช้ชื่อพา ธ นั้นแทน

ในเชลล์1จากนั้นจะอยู่ในไฟล์:

ls -l ${GIT_INDEX_FILE-$(git rev-parse --git-dir)/index}

ไฟล์นี้อาจมีหรือไม่มีอยู่ก็ได้ หากไม่มีอยู่แสดงว่าในขณะนี้ไม่มีดัชนีและแคชว่างเปล่า


1สิ่งนี้ถือว่า/bin/shหรือไวยากรณ์ที่เข้ากันได้ เปลือกหอยบางชนิดมีโครงสร้างที่แตกต่างกัน


แคชนี้เก็บไว้ใน RAM หรือไฟล์หรือไม่?

อย่างที่เราเห็นมันอยู่ในไฟล์ อย่างไรก็ตาม Git จะอ่านไฟล์นี้หลังจากนั้นจะอยู่ใน RAM (ในรูปแบบใดก็ตามที่มีประโยชน์มากที่สุดในหน่วยความจำซึ่งแตกต่างจากรูปลักษณ์บนดิสก์โดยทั่วไป) ตัวไฟล์อาจมีคำสั่งที่สั่งให้ส่วนต่างๆของ Git อ่านไฟล์อื่น ๆ ด้วย

แคชใช้เพื่อปรับปรุงประสิทธิภาพในคอมไพล์หรือไม่?

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

ฉันรู้ว่าฉันสามารถลบแคชด้วยgit rm --cached .คำสั่ง

สิ่งนี้ไม่ได้ลบแคชเอง มันจะลบรายการออกจากแคช (และถึงแม้จะถูกทำเครื่องหมายว่า "ถูกลบ" เท่านั้นภายในและยังมีส่วนขยายบนดิสก์เพื่อให้รายการบางรายการสามารถคืนชีพได้หากจำเป็น)

แคชคืออะไร?

ในฐานะที่เป็นคำทั่วไปในการคำนวณก็ดีทั่วไปมาก

สิ่งที่เก็บอยู่ในแคช?

แหล่ง Gitรวมถึงเอกสารทางเทคนิคที่มีรายละเอียด คุณสามารถดูได้ในการดำเนินการใช้และgit ls-files --stagegit ls-files --debug