แก้ไข:
คำตอบของฉันด้านล่างเอกสารวิธีการผสานmaster
เข้าaq
ที่ถ้าคุณดูรายละเอียดของการผสานมันแสดงการเปลี่ยนแปลงที่เกิดขึ้นในก่อนที่จะมีการรวมไม่เปลี่ยนแปลงที่เกิดขึ้นในaq
master
ฉันรู้ว่านั่นอาจไม่ใช่สิ่งที่คุณต้องการแม้ว่าคุณจะคิด!
แค่:
git checkout aq
git merge master
ไม่เป็นไร
ใช่นี้ผสานง่ายจะแสดงให้เห็นว่าการเปลี่ยนแปลงจากmaster
ที่ได้ทำไปaq
ที่จุดที่ไม่รอบทางอื่น ๆ ; แต่ก็ไม่เป็นไร - เพราะนั่นคือสิ่งที่เกิดขึ้น! ต่อมาเมื่อคุณรวมสาขาของคุณเข้าด้วยกันในที่สุดmaster
นั่นคือเมื่อการรวมจะแสดงการเปลี่ยนแปลงทั้งหมดของคุณตามที่ได้ทำไว้master
(ซึ่งเป็นสิ่งที่คุณต้องการอย่างแท้จริงและเป็นสิ่งที่ผู้คนคาดหวังว่าจะพบข้อมูลนั้น)
ฉันได้ตรวจสอบแล้วและวิธีการด้านล่างนี้ยังแสดงการเปลี่ยนแปลงที่เหมือนกันทุกประการ(การเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นaq
ตั้งแต่การแยกแบบดั้งเดิมระหว่างaq
และmaster
) เป็นวิธีการปกติด้านบนเมื่อคุณรวมทุกอย่างเข้าmaster
ด้วยกัน ดังนั้นฉันคิดว่ามันเป็นข้อเสียที่แท้จริงเพียงอย่างเดียว (นอกเหนือจากความซับซ้อนและไม่ได้มาตรฐาน ... : - /) คือถ้าคุณgit reset --hard HEAD~<n>
ไขการเปลี่ยนแปลงล่าสุดที่มีและสิ่งนี้ผ่านการรวมแล้วเวอร์ชั่นด้านล่างจะย้อนกลับ สาขา 'ผิด' ซึ่งคุณต้องแก้ไขด้วยมือ (เช่นกับgit reflog
& git reset --hard [sha]
)
[ดังนั้นสิ่งที่ฉันคิดว่าก่อนหน้านี้คือ:]
มีปัญหากับ:
git checkout aq
git merge master
เนื่องจากการเปลี่ยนแปลงที่แสดงในการคอมมิชชันคอมมิชชัน (เช่นถ้าคุณดูตอนนี้หรือในภายหลังใน Github, Bitbucket หรือผู้ดูประวัติ git ท้องถิ่นที่คุณชื่นชอบ) เป็นการเปลี่ยนแปลงที่เกิดขึ้นกับมาสเตอร์ซึ่งอาจไม่ใช่สิ่งที่คุณต้องการ
ในทางกลับกัน
git checkout master
git merge aq
แสดงการเปลี่ยนแปลงที่เกิดขึ้นใน aq ซึ่งอาจเป็นสิ่งที่คุณต้องการ (หรืออย่างน้อยก็มักจะเป็นสิ่งที่ฉันต้องการ!) แต่การผสานแสดงการเปลี่ยนแปลงที่ถูกต้องอยู่ในสาขาที่ไม่ถูกต้อง!
วิธีรับมือ!
กระบวนการเต็มรูปแบบลงท้ายด้วยการรวมการกระทำแสดงการเปลี่ยนแปลงที่เกิดขึ้นใน aq (ตามการผสานที่สองข้างต้น) แต่ด้วยการผสานที่มีผลต่อสาขา aq คือ:
git checkout master
git merge aq
git checkout aq
git merge master
git checkout master
git reset --hard HEAD~1
git checkout aq
สิ่งนี้: ผสาน aq เข้ากับ master ส่งต่ออย่างรวดเร็วไปยัง aq เดียวกันรวมกับเลิกใช้บน master และทำให้คุณกลับมาใช้ aq อีกครั้ง!
ฉันรู้สึกว่าฉันขาดอะไรบางอย่างไป - ดูเหมือนว่าจะเป็นสิ่งที่คุณต้องการและสิ่งที่ยากที่จะทำ
นอกจากนี้การคืนเงินจะไม่เทียบเท่า มันสูญเสียการประทับเวลาและตัวตนของความมุ่งมั่นใน aq ซึ่งก็ไม่ใช่สิ่งที่ฉันต้องการ