ฉันจะสร้างข้อความใหม่commitและสร้างข้อความใหม่ได้อย่างไรหากไม่มีการเปลี่ยนแปลงไฟล์
เป็นไปไม่ได้เนื่องจากรหัสของการกระทำ (SHA?) จะเหมือนกันหรือไม่?
ฉันจะสร้างข้อความใหม่commitและสร้างข้อความใหม่ได้อย่างไรหากไม่มีการเปลี่ยนแปลงไฟล์
เป็นไปไม่ได้เนื่องจากรหัสของการกระทำ (SHA?) จะเหมือนกันหรือไม่?
คำตอบ:
ไม่ค่อยมีเหตุผลที่ดีในการทำเช่นนี้ แต่พารามิเตอร์มี--allow-emptyไว้--allow-empty-messageสำหรับการคอมมิตว่าง (ไม่มีไฟล์เปลี่ยนแปลง) ตรงกันข้ามกับข้อความคอมมิตว่าง นอกจากนี้คุณยังสามารถอ่านเพิ่มเติมโดยการพิมพ์git help commitหรือเยี่ยมชมเอกสารออนไลน์
ในขณะที่วัตถุต้นไม้ (ซึ่งมีแฮชเป็นของตัวเอง) จะเหมือนกัน แต่การคอมมิตนั้นจะมีแฮชที่แตกต่างกันเพราะมันน่าจะมีการประทับเวลาและข้อความที่แตกต่างกันและจะมีการคอมมิตของพาเรนต์ที่แตกต่างกัน ปัจจัยทั้งสามเหล่านี้รวมอยู่ในgitอัลกอริทึมแฮชอ็อบเจ็กต์
มีอยู่ไม่กี่เหตุผลที่คุณอาจต้องการที่ว่างเปล่ากระทำ (ผสมผสานความคิดเห็นบางส่วน):
gitคำสั่งโดยไม่สร้างการเปลี่ยนแปลงตามอำเภอใจ (ผ่านVaelus )gitolite(ผ่านTatsh )กลยุทธ์อื่น ๆ ในการเพิ่มข้อมูลเมตาลงในโครงสร้างคอมมิต ได้แก่ :
git notes เพื่อเชื่อมโยงบันทึกย่อที่เปลี่ยนแปลงได้ที่ด้านบนของการกระทำที่ไม่เปลี่ยนรูปที่มีอยู่commit --amendหากรีโมทไม่อนุญาตให้กดบังคับ ด้วยวิธีนี้คุณสามารถอนุญาตให้นักพัฒนาเห็นข้อความสำคัญที่มาพร้อมกับการคอมมิตก่อนหน้านี้
ถ้าฉันเข้าใจคุณถูกต้องคุณต้องการที่จะทำการคอมมิตว่างเปล่า ในกรณีนี้คุณต้อง:
git commit --allow-empty
ว่างเปล่าด้วยข้อความ
git commit --allow-empty -m "Empty test commit"
ล้างคอมมิตด้วยข้อความว่างเปล่า
git commit --allow-empty --allow-empty-message
หากคุณกำลังใช้ระบบเช่นgitversionมันสมเหตุสมผลมากที่จะทำการคอมมิตประเภทนี้ คุณสามารถมีคอมมิตที่มีไว้สำหรับการชนเวอร์ชันหลักโดยเฉพาะโดยใช้ + semver: major comment
อาจเป็นทางเลือกที่สมเหตุสมผลกว่าคุณสามารถสร้างแท็กที่มีคำอธิบายประกอบได้ ดูgit tag -aตัวเลือก
devแบบฟอร์มสาขาmasterแล้วfeatสาขาทันทีdevที่featสาขารูปลักษณ์ที่จะมาจากmasterสาขาที่ไม่มีความแตกต่างกระทำในdevสาขาที่featสาขามาจาก ที่ว่างเปล่ากระทำเมื่อคุณทำให้devสาขาจะช่วยสร้างdevสาขาเป็นของตัวเองไปเรื่อย ๆmasterเป็นเวลานานอิสระสาขาของ โดยทั่วไปจะมีประโยชน์เมื่อคุณใช้กิ่งก้านเป็นเลเยอร์และสร้างสองชั้นจากการคอมมิตเดียว