จะยกเลิกการผสาน Mercurial ได้อย่างไร?


85

ฉันเกลียดการผสาน ฉันต้องการเปลี่ยนกลับแล้วลองอีกครั้ง
มีวิธียกเลิกการผสานก่อนที่จะทำการคอมมิตหรือไม่?

hg revertไม่ทำในสิ่งที่ฉันต้องการ แต่จะเปลี่ยนข้อความของไฟล์เท่านั้น Mercurial ยกเลิกความพยายามครั้งที่สองของฉันในการรวมและบ่นว่าการผสานดั้งเดิมยังคงไม่มีข้อผูกมัด

มีวิธียกเลิกการผสานหลังจากhg mergeคำสั่ง แต่ก่อนที่จะคอมมิตหรือไม่?


คำตอบ:


107

hg update -C <one of the two merge changesets>


ง่ายมีประสิทธิภาพและฉันคิดว่าเป็นวิธีที่ดีที่สุด! : D
Eric-Karl

@ จอนล. - ใช่เป็นคำพ้องสำหรับ--clean -Cฉันไม่แน่ใจว่า.จะอ้างถึงชุดการเปลี่ยนแปลงใด แต่จะเป็นหนึ่งในชุดการเปลี่ยนแปลงที่ผสานสองชุดเสมอ
Omnifarious

3
@Omnifarious การทำความสะอาด.ควรทำความสะอาดทุกครั้งที่คุณแก้ไขก่อนที่จะเริ่มการผสาน ดังนั้นหากคุณอยู่ที่ r42 พยายามรวมกับ r43 ล้มเหลวทำความสะอาดคุณจะกลับมาใช้ r42 ที่บริสุทธิ์
Jon L.

2
hg update --cleanใช้งานได้เหมือนเป็น.ค่าเริ่มต้นโดยนัย - แม้ว่าจะไม่ได้รับการบันทึกไว้อย่างชัดเจน
Joel Purra

@JoelPurra: ความหมายของ.ในบริบทของการผสานค่อนข้างคลุมเครือ
Omnifarious

39

หลังจากที่คุณทำhg mergeแต่ก่อนhg commitสำเนาการทำงานของคุณมีผู้ปกครองสองคน: พาเรนต์แรกคือชุดการเปลี่ยนแปลงที่คุณได้อัปเดตก่อนการผสานและพาเรนต์ที่สองคือชุดการเปลี่ยนแปลงที่คุณกำลังรวมเข้าด้วยกัน Mercurial จะไม่ปล่อยให้คุณทำhg mergeอีกตราบเท่าที่สำเนาการทำงานของคุณมีพ่อแม่สองคน

คุณมีสองทางเลือกในการดำเนินการต่อ:

  1. หากคุณต้องการยกเลิกการผสานและกลับไปที่จุดเริ่มต้นให้ทำ

    hg update -C .
    

    สิ่งนี้จะอัปเดตสำเนาที่ใช้งานได้เพื่อให้ตรงกับพาเรนต์แรก: .เสมอหมายถึงพาเรนต์แรกของสำเนาที่ใช้งานได้

  2. หากคุณต้องการรวมไฟล์บางไฟล์อีกครั้งให้ทำ

    hg resolve fileA fileB
    

    hg mergeนี้จะเปิดตัวอีกครั้งเครื่องมือผสานเช่นเดียวกับเมื่อคุณได้ คำสั่งการแก้ปัญหาเป็นสิ่งที่ดีถ้าคุณหาที่hg mergeเรียลไทม์ว่าเครื่องมือผสานของคุณมีการกำหนดค่าไม่ดี: hg resolve --allแก้ไขการตั้งค่าและการทำงาน คุณสามารถเรียกใช้hg resolveกี่ครั้งก็ได้ตามที่คุณต้องการจนกว่าคุณจะพอใจกับการผสาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.