คำสั่ง Update
hg update [-C] [-d DATE] [[-r] REV]
ทำการแทนที่เนื้อหาในไดเร็คทอรี่สำหรับใช้ทำงาน (หรือ "working copy") ของ repository ให้ตรงกับเนื้อหาในเวอร์ชั่นที่ระบุ แต่ถ้าไม่ได้ระบุเวอร์ชั่นก็ให้ใช้เวอร์ชั่นปลายของกิ่ง (ที่มีชื่อ) ปัจจุบัน
การระบุเวอร์ชั่นชื่อ 'null' จะทำการลบไดเร็คทอรี่สำหรับใช้ทำงานทั้งหมด (เทียบเท่ากับคำสั่ง 'hg clone -U') ยกเว้นไฟล์ที่ไม่ถูกเก็บประวัติใน repository
ถ้าเกิดว่าไม่มีการแก้ไขหรือการรวมการแก้ไขที่รอการคอมมิท คำสั่ง Update จะแทนที่เนื้อหาของไดเร็คทอรี่สำหรับใช้ทำงานด้วยเนื้อหาที่อยู่ในเวอร์ชั่นการแก้ไขที่ระบุ และเปลี่ยนบรรพบุรุษ (อันแรก) ของไดเร็คทอรี่สำหรับใช้ทำงานเป็นเวอร์ชั่นนั้น
ถ้าเกิดไดเร็คทอรี่สำหรับใช้ทำงานมีบรรพบุรุษสองอัน -- ซึ่งอาจเกิดจากการใช้คำสั่ง 'hg merge' และยังไม่คอมมิท -- คำสั่ง update จะยกเลิกการทำงาน (ถ้าไม่ได้ใช้ตัวเลือก -C)
คุณสามารถใช้คำสั่ง 'hg parents' เพื่อแสดงบรรพบุรุษของไดเร็คทอรี่สำหรับใช้ทำงาน
ถ้าเวอร์ชั่นที่คุณระบุอยู่คนละกิ่งกับกิ่งปัจจุบัน ชื่อกิ่งของไดเร็คทอรี่สำหรับใช้ทำงานจะถูกเปลี่ยนเป็นชื่อของกิ่งของเวอร์ชั่นนั้น
คุณสามารถใช้ตัวเลือก -C เพื่อลบการแก้ไขทั้งหมดที่ยังไม่ถูกคอมมิท (ระวังไว้ เพราะ Mercurial ไม่ได้สำเนาให้นะ!) หรือยกเลิกผลลัพธ์ของคำสั่ง 'hg merge' ที่ยังไม่ถูกคอมมิทได้เช่นกัน โดยตัวเลือกนี้จะแทนที่เนื้อหาในไดเร็คทอรี่สำหรับใช้ทำงานด้วยเนื้อหาที่อยู่ในเวอร์ชั่นที่ระบุและลบบรรพบุรุษอันที่สองของไดเร็คทอรี่ทิ้ง (ถ้ามี)
ถ้าเกิดว่าในไดเร็คทอรี่สำหรับใช้ทำงานยังมีการแก้ไขที่ไม่ถูกคอมมิทและคุณไม่ได้ระบุตัวเลือก -C แต่ว่าทั้งบรรพบุรุษ (อันแรก) ของไดเร็คทอรี่สำหรับใช้ทำงานและเวอร์ชั่นที่ระบุอยู่บนกิ่งเดียวกัน และบรรพบุรุษของไดเร็คทอรี่ก็เป็นบรรพบุรุษของเวอร์ชั่นที่ระบุหรือกลับกัน เนื้อหาของเวอร์ชั่นที่ระบุจะถูกรวมเข้ากับการแก้ไขที่ยังไม่ถูกคอมมิท (คล้ายๆ 'hg merge' แต่จะไม่มีการเซ็ตบรรพบุรุษอันที่สองของไดเร็คทอรี่สำหรับใช้ทำงาน) สำหรับกรณีนอกเหนือจากนี้ Mercurial จะแนะนำให้คุณใช้คำสั่ง 'hg merge' หรือ 'hg update -C' แทน
ถ้าคุณต้องการแทนที่เนื้อหาของแค่ไฟล์เดียวกลับเป็นเนื้อหาในเวอร์ชั่นเก่า (โดยไม่เปลี่ยนบรรพบุรุษของไดเร็คทอรี่สำหรับใช้ทำงาน) ให้ใช้คำสั่ง revert
ตัวช่วยเหลือ: http://www.selenic.com/mercurial/hg.1.html#update
