ทำไม
ประวัติ Git ทำงานได้ดีที่สุดเมื่อมันบอกเล่าเรื่องราวของกระบวนการพัฒนา เมื่อคุณต้องการขุดประวัติ (เช่นเพื่อค้นหาเมื่อมีการแนะนำข้อผิดพลาดเมื่อได้รับการแก้ไข ฯลฯ ) มันไม่ได้ช่วยให้เห็นความมุ่งมั่นในหัวข้อ"เพิ่มการเปลี่ยนแปลงวันนี้" ; พวกเขาบอกคุณว่ารหัสมีการเปลี่ยนแปลง แต่ไม่ใช่เหตุผล
การเขียนประวัติการกระทำซ้ำนั้นเป็นเรื่องปกติ (เพื่อรวมคอมมิชชันสับเปลี่ยนพวกมันไปเรื่อย ๆ ) - แต่ถ้าคุณเพียงแค่ลบ 2 ออกจากทุก ๆ 3 การกระทำมันอาจจะไร้ประโยชน์เหมือนเมื่อก่อน ให้เขียนประวัติเพื่อล้างสิ่งต่างๆเช่น "อ๊ะแก้ไขคำผิด" หรือเพิ่มรายละเอียดเพื่อส่งข้อความ
แน่นอนข้างต้นเป็นเรื่องของความเห็น แต่โดยทั่วไปแล้วมันมีประโยชน์มากกว่าที่จะให้คอมพิวเตอร์จดจำสิ่งต่าง ๆ เพื่อที่คุณจะได้ไม่ต้องทำ
ความมุ่งมั่น 425 เป็นเรื่องปกติสำหรับโครงการหลายเดือน นอกจากนี้ยังมีขนาดค่อนข้างเล็กเมื่อเทียบกับที่เก็บ Git ในโลกแห่งความจริง หากความกังวลของคุณคือการใช้พื้นที่ดิสก์และ Git ยังไม่ได้เรียกใช้เป็นระยะgit gc
ลองใช้ด้วยตนเองและดูว่าจะช่วยได้หรือไม่
สำหรับการสำรองข้อมูลผ่านเครือข่ายgit push
จะมีประสิทธิภาพมากกว่าการอัปโหลดที่เก็บข้อมูลทั้งหมดด้วยตนเองเนื่องจากมันรู้ว่าต้องอัพโหลดอะไรและมีอะไรอยู่บ้าง
กลับไปที่จุด
Git มีเครื่องมือมากมายสำหรับการเขียนประวัติใหม่ - ที่พบมากที่สุดคือgit rebase --interactive
สามารถแก้ไขประเภทที่คุณต้องการได้
; on a feature branch, to rewrite everything that's not yet in master
git rebase -i master
; on master, to go through the *entire history*
git rebase -i --root
การเรียกใช้ในโหมดโต้ตอบจะเปิด "รายการสิ่งที่ต้องทำ" ในเท็กซ์เอดิเตอร์โดยมีหนึ่งบรรทัดต่อคอมมิตและ "แอ็คชัน" ที่อยู่ข้างหน้า
การย้ายเส้นรอบ ๆ จะเป็นการจัดลำดับความมุ่งมั่นใหม่ (อย่างไรก็ตามการเปลี่ยนข้อความจะไม่อัปเดตข้อความยืนยัน - เป็นเพียงตัวอย่างเท่านั้นใช้reword
เพื่อแก้ไขข้อความจริง)
การเปลี่ยนการกระทำจากpick
เป็นsquash
จะรวมการคอมมิชชันกับการดำเนินการด้านบนส่งผลให้การคอมมิชชันเดียวที่มีทั้งข้อความเช่นกัน
การfixup
ดำเนินการคล้ายกัน แต่เก็บข้อความที่ 1 เท่านั้น
นั่นเป็นพื้นฐานเพราะมีบทเรียนมากมายที่เขียนขึ้นโดยละเอียดแล้ว ยกตัวอย่างเช่นGit หนังสือมีบทที่เกี่ยวกับการเขียนประวัติศาสตร์