ฉันจะสร้างข้อความใหม่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
เป็นเวลานานอิสระสาขาของ โดยทั่วไปจะมีประโยชน์เมื่อคุณใช้กิ่งก้านเป็นเลเยอร์และสร้างสองชั้นจากการคอมมิตเดียว