ฉันค่อนข้างใหม่กับคอมไพล์ฉันเคยใช้ Subversion มาก่อน
ฉันสังเกตเห็นว่าส่วนหน้าของคอมไพล์กราฟิกและปลั๊กอิน IDE ส่วนใหญ่ดูเหมือนจะไม่สามารถแสดงประวัติของไฟล์ได้หากไฟล์ถูกเปลี่ยนชื่อ เมื่อฉันใช้
git log --follow
ในบรรทัดคำสั่งฉันเห็นบันทึกทั้งหมดในการเปลี่ยนชื่อ
จากข้อมูลของ Linus Torvaldsสวิตช์ --follow เป็นคำสั่ง "SVN noob" ผู้ใช้คอมไพล์ที่จริงจังไม่ได้ใช้:
--follow เป็นแฮ็คทั้งหมดที่มีขึ้นเพื่อตอบสนองผู้ใช้อดีต SVN ที่ไม่เคยรู้อะไรเกี่ยวกับสิ่งต่างๆเช่นความเป็นพ่อแม่หรือกราฟการแก้ไขที่ดีเลย
มันไม่ได้เป็นพื้นฐานโดยสิ้นเชิง แต่การใช้งาน "--follow" ในปัจจุบันเป็นสิ่งที่ช่วยประมวลผลล่วงหน้าอย่างรวดเร็วที่ยึดติดกับตรรกะการเดินการแก้ไขแทนที่จะเป็นอะไรที่สำคัญจริงๆ
มันได้รับการออกแบบให้เป็น "SVN noob" อย่างแท้จริงไม่ใช่เป็น "ฟังก์ชันคอมไพล์จริง" แนวคิดก็คือคุณจะหลีกหนีจากความคิด (เสีย) ที่คิดว่าการเปลี่ยนชื่อมีความสำคัญในภาพรวม
คำถามของฉัน : ผู้ใช้คอมไพล์ฮาร์ดคอร์ในหมู่คุณจะได้รับประวัติของไฟล์อย่างไรเมื่อถูกเปลี่ยนชื่อ? วิธีที่ 'จริง' ในการทำเช่นนี้คืออะไร?
/bin/mv oldfile newfile) แต่ทำแล้วgit add newfile; git rm oldfileผลลัพธ์จะแยกไม่ออกจากgit mv oldfile newfileไฟล์.
git log --followปรับปรุงเล็กน้อยด้วย git 2.9 (มิถุนายน 2016): ดูคำตอบของฉันด้านล่าง
--color-movedเมื่อdiffใด
git mv oldfile newfileไม่ทำให้การเปลี่ยนชื่อถูกบันทึกเลย - มันเหมือนกับการลบไฟล์หนึ่งไฟล์และเพิ่มอีกไฟล์ git ใช้เฉพาะการเปลี่ยนชื่อและคัดลอกจากสถานะของทรีในการคอมมิตแต่ละครั้งหลังจากความเป็นจริง