อะไรคือข้อแตกต่างระหว่าง hg forget และ hg remove?


313

ฉันต้องการให้ Mercurial ลบไฟล์หลาย ๆ ไฟล์ออกจากสถานะปัจจุบันของที่เก็บ อย่างไรก็ตามฉันต้องการให้ไฟล์มีอยู่ในประวัติก่อนหน้า

วิธีทำforgetและremoveแตกต่างกันและพวกเขาสามารถทำสิ่งที่ฉันต้องการได้หรือไม่


27
ไม่ต้องกังวลคุณไม่สามารถลบไฟล์ออกจากประวัติก่อนหน้านี้ใน Mercurial - ประวัติโดยทั่วไปจะไม่เปลี่ยนรูปเว้นแต่คุณจะเริ่มใช้ส่วนขยาย
Martin Geisler

คำตอบ:


348

' hg forget' เป็นแค่การจดชวเลขสำหรับ ' hg remove -Af' จากความhg removeช่วยเหลือ '':

... และ - สามารถใช้เพื่อลบไฟล์ออกจากการแก้ไขครั้งถัดไปโดยไม่ลบไฟล์ออกจากไดเรกทอรีการทำงาน

บรรทัดด้านล่าง: ' remove' ลบไฟล์ออกจากสำเนาการทำงานของคุณบนดิสก์ (ยกเว้นกรณีที่คุณใช้-Af) และ ' forget' ไม่ได้


7
"hg forget" เปิดตัวอีกครั้งใน Mercurial 1.3 เป็นวิธีที่ง่ายกว่าในการทำ "hg remove -f" มันกำหนดเวลาไฟล์สำหรับการลบโดยไม่ต้องลบมันจากสำเนาทำงาน
Martin Geisler

5
ดีใจที่ได้ยิน 'remove -Af' (และตัวเลือกทั้งตารางในหน้า 'help' help) คือ / เป็นความบ้าคลั่ง
Ry4an Brase

32
@ Ry4an: อย่างจริงจังมันไร้สาระ ฉันมีส่วนร่วมแพทช์ที่แนะนำ 'ลืม' เมื่อฉันทำมันฉันรู้ว่า - มีเหตุผลที่สมบูรณ์ในรหัส แต่จากมุมมองของผู้ใช้มันไร้สาระอย่างสมบูรณ์
Steve Losh

10
เฮ้นั่นคือสิ่งที่ยอดเยี่ยมมากเกี่ยวกับความเมตตา - ผู้คนกระตือรือร้นและคิดซ้ำ ๆ เกี่ยวกับสิ่งที่สมเหตุสมผลจากมุมมองของผู้ใช้ ขอบคุณสำหรับการแก้ไขที่หนึ่ง
Ry4an Brase

9
ไฟล์กำหนดค่าบิวด์บิวด์หรือที่คล้ายกัน พา ธ ไปยังเครื่องมือโลคัลที่แตกต่างจากระบบไปสู่ระบบ? เพิ่มไฟล์บันทึกที่คุณไม่ต้องการในการควบคุมแหล่งข้อมูลโดยไม่ตั้งใจ แต่ต้องการบันทึกหรือไม่ ฉันเดาว่ามันจะเกิดขึ้น
Ry4an Brase

42

วิธีที่ดีที่สุดที่จะนำคือว่าhg forgetเป็นเหมือนกันที่จะhg remove ยกเว้นว่าใบไฟล์ที่อยู่เบื้องหลังในการของคุณสำเนาทำงาน ไฟล์จะถูกทิ้งไว้ข้างหลังเป็นไฟล์ที่ไม่ได้ติดตามและสามารถเพิกเฉยกับรูปแบบ.hgignoreได้

ฉันไม่สามารถบอกได้ว่าคุณใช้hg forgetหรือhg removeเมื่อฉันดึงออกมาจากคุณ ไฟล์ที่คุณวิ่งhg forgetบนจะถูกลบออกเมื่อฉันอัปเดตการแก้ไขที่ - เช่นเดียวกับถ้าคุณได้ใช้hg removeแทน


27

จากเอกสารคุณเห็นได้ชัดว่าคุณสามารถใช้คำสั่งเพื่อเก็บไฟล์ในประวัติโครงการ ดูเหมือนว่าคุณต้องการลบเนื่องจากมันจะลบไฟล์ออกจากไดเรกทอรีทำงาน

จากหนังสือ Mercurial ที่http://hgbook.red-bean.com/read/ :

การลบไฟล์ไม่มีผลกับประวัติ สิ่งสำคัญคือต้องเข้าใจว่าการลบไฟล์มีผลเพียงสองประการ จะลบเวอร์ชันปัจจุบันของไฟล์ออกจากไดเรกทอรีทำงาน มันจะหยุด Mercurial จากการติดตามการเปลี่ยนแปลงของไฟล์นับจากเวลาที่ส่งมอบครั้งต่อไป การลบไฟล์ไม่ได้เป็นการแก้ไขประวัติของไฟล์ แต่อย่างใด

man page hg (1) พูดถึงเรื่องลืม:

ทำเครื่องหมายไฟล์ที่ระบุเพื่อไม่ให้มีการติดตามอีกต่อไปหลังจากการส่งครั้งต่อไป สิ่งนี้จะลบไฟล์ออกจากสาขาปัจจุบันไม่ใช่จากประวัติโครงการทั้งหมดและจะไม่ลบไฟล์ออกจากไดเรกทอรีการทำงาน

และนี่เกี่ยวกับการลบ:

กำหนดเวลาไฟล์ที่ระบุเพื่อลบออกจากที่เก็บ สิ่งนี้จะลบไฟล์ออกจากสาขาปัจจุบันเท่านั้นไม่ใช่จากประวัติโครงการทั้งหมด


3

หากคุณใช้"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 แบบ


2

ไฟล์สามารถติดตามหรือไม่คุณใช้hg เพิ่มเพื่อติดตามไฟล์และ hg ลบหรือ hg ลืมที่จะยกเลิกการติดตาม การใช้hg removeโดยไม่ต้องตั้งค่าสถานะจะเป็นการลบไฟล์และยกเลิกการติดตามhg ลืมเพียงแค่ยกเลิกการติดตามโดยไม่ต้องลบทิ้ง


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