簡體   English   中英

hg forget和hg remove有什么區別?

[英]What is the difference between hg forget and hg remove?

我希望mercurial從存儲庫的當前狀態中刪除多個文件。 但是,我希望文件存在於以前的歷史記錄中。

如何forgetremove不同,他們可以做我想要的嗎?

' hg forget '只是' hg remove -Af '的縮寫。 來自' hg remove '幫助:

...和-Af可用於從下一版本中刪除文件而不從工作目錄中刪除它們。

底線:' remove '從磁盤上的工作副本中刪除文件(除非您使用-Af ),' forget '不會。

把最好的辦法是, hg forget相同hg remove 除了它葉子中的文件, 你的工作副本后面。 這些文件作為未跟蹤文件留下,現在可以選擇使用.hgignore的模式進行忽略。

換句話說,當我從你那里拉出來時,我無法判斷你是否使用了hg forgethg remove 當我更新到該變更集時,您 hg forget運行的文件被刪除 - 就像您使用了hg remove

從文檔中,您顯然可以使用任一命令將文件保留在項目歷史記錄中。 看起來你想刪除,因為它也從工作目錄中刪除文件。

來自http://hgbook.red-bean.com/read/上的Mercurial書:

刪除文件不會影響其歷史記錄。 重要的是要理解刪除文件只有兩個效果。 它從工作目錄中刪除當前版本的文件。 它阻止Mercurial從下次提交時開始跟蹤對文件的更改。 刪除文件不會以任何方式改變文件的歷史記錄。

手冊頁hg(1)說這是關於忘記:

標記指定的文件,以便在下次提交后不再跟蹤它們。 這僅從當前分支中刪除文件,而不是從整個項目歷史記錄中刪除文件,並且不會從工作目錄中刪除它們。

這個關於刪除:

安排指定的文件以從存儲庫中刪除。 這僅從當前分支中刪除文件,而不是從整個項目歷史記錄中刪除。

如果對具有“A”狀態的文件使用"hg remove b" ,這意味着它已被添加但未提交,Mercurial將響應:

  not removing b: file has been marked for add (use forget to undo)

這種反應非常明確地說明了刪除和遺忘之間的區別。

我的理解是"hg forget"用於撤消添加但未提交的文件,以便版本控制不跟蹤它; "hg remove"用於從版本控制中取出一個已提交的文件。

線程有一個示例,用於對7種不同類型狀態的文件使用hg remove

可以跟蹤或不跟蹤文件,使用hg add跟蹤文件和hg remove或hg忘記取消跟蹤它。 使用沒有標志的hg刪除將刪除文件並取消跟蹤它, hg忘記只是取消跟蹤它而不刪除它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM