ฉันต้องการให้ Mercurial ลบไฟล์หลาย ๆ ไฟล์ออกจากสถานะปัจจุบันของที่เก็บ อย่างไรก็ตามฉันต้องการให้ไฟล์มีอยู่ในประวัติก่อนหน้า
วิธีทำforget
และremove
แตกต่างกันและพวกเขาสามารถทำสิ่งที่ฉันต้องการได้หรือไม่
ฉันต้องการให้ Mercurial ลบไฟล์หลาย ๆ ไฟล์ออกจากสถานะปัจจุบันของที่เก็บ อย่างไรก็ตามฉันต้องการให้ไฟล์มีอยู่ในประวัติก่อนหน้า
วิธีทำforget
และremove
แตกต่างกันและพวกเขาสามารถทำสิ่งที่ฉันต้องการได้หรือไม่
คำตอบ:
' hg forget
' เป็นแค่การจดชวเลขสำหรับ ' hg remove -Af
' จากความhg remove
ช่วยเหลือ '':
... และ - สามารถใช้เพื่อลบไฟล์ออกจากการแก้ไขครั้งถัดไปโดยไม่ลบไฟล์ออกจากไดเรกทอรีการทำงาน
บรรทัดด้านล่าง: ' remove
' ลบไฟล์ออกจากสำเนาการทำงานของคุณบนดิสก์ (ยกเว้นกรณีที่คุณใช้-Af
) และ ' forget
' ไม่ได้
วิธีที่ดีที่สุดที่จะนำคือว่าhg forget
เป็นเหมือนกันที่จะhg remove
ยกเว้นว่าใบไฟล์ที่อยู่เบื้องหลังในการของคุณสำเนาทำงาน ไฟล์จะถูกทิ้งไว้ข้างหลังเป็นไฟล์ที่ไม่ได้ติดตามและสามารถเพิกเฉยกับรูปแบบ.hgignore
ได้
ฉันไม่สามารถบอกได้ว่าคุณใช้hg forget
หรือhg remove
เมื่อฉันดึงออกมาจากคุณ ไฟล์ที่คุณวิ่งhg forget
บนจะถูกลบออกเมื่อฉันอัปเดตการแก้ไขที่ - เช่นเดียวกับถ้าคุณได้ใช้hg remove
แทน
จากเอกสารคุณเห็นได้ชัดว่าคุณสามารถใช้คำสั่งเพื่อเก็บไฟล์ในประวัติโครงการ ดูเหมือนว่าคุณต้องการลบเนื่องจากมันจะลบไฟล์ออกจากไดเรกทอรีทำงาน
จากหนังสือ Mercurial ที่http://hgbook.red-bean.com/read/ :
การลบไฟล์ไม่มีผลกับประวัติ สิ่งสำคัญคือต้องเข้าใจว่าการลบไฟล์มีผลเพียงสองประการ จะลบเวอร์ชันปัจจุบันของไฟล์ออกจากไดเรกทอรีทำงาน มันจะหยุด Mercurial จากการติดตามการเปลี่ยนแปลงของไฟล์นับจากเวลาที่ส่งมอบครั้งต่อไป การลบไฟล์ไม่ได้เป็นการแก้ไขประวัติของไฟล์ แต่อย่างใด
man page hg (1) พูดถึงเรื่องลืม:
ทำเครื่องหมายไฟล์ที่ระบุเพื่อไม่ให้มีการติดตามอีกต่อไปหลังจากการส่งครั้งต่อไป สิ่งนี้จะลบไฟล์ออกจากสาขาปัจจุบันไม่ใช่จากประวัติโครงการทั้งหมดและจะไม่ลบไฟล์ออกจากไดเรกทอรีการทำงาน
และนี่เกี่ยวกับการลบ:
กำหนดเวลาไฟล์ที่ระบุเพื่อลบออกจากที่เก็บ สิ่งนี้จะลบไฟล์ออกจากสาขาปัจจุบันเท่านั้นไม่ใช่จากประวัติโครงการทั้งหมด
หากคุณใช้"hg remove b"
กับไฟล์ที่มีสถานะ "A" ซึ่งหมายความว่าไฟล์นั้นถูกเพิ่มเข้ามา แต่ไม่ได้ทำการผูกมัด Mercurial จะตอบกลับ:
not removing b: file has been marked for add (use forget to undo)
การตอบสนองนี้เป็นการอธิบายที่ชัดเจนของความแตกต่างระหว่างการลบและการลืม
ความเข้าใจของฉัน"hg forget"
คือการยกเลิกการเพิ่มไฟล์ แต่ไม่ได้มุ่งมั่นเพื่อที่จะไม่ถูกติดตามโดยการควบคุมเวอร์ชัน; ในขณะที่"hg remove"
สำหรับการออกไฟล์มุ่งมั่นจากการควบคุมเวอร์ชัน
เธรดนี้มีตัวอย่างสำหรับใช้hg remove
กับไฟล์ที่มีสถานะแตกต่างกัน 7 แบบ
ไฟล์สามารถติดตามหรือไม่คุณใช้hg เพิ่มเพื่อติดตามไฟล์และ hg ลบหรือ hg ลืมที่จะยกเลิกการติดตาม การใช้hg removeโดยไม่ต้องตั้งค่าสถานะจะเป็นการลบไฟล์และยกเลิกการติดตามhg ลืมเพียงแค่ยกเลิกการติดตามโดยไม่ต้องลบทิ้ง