[英]What is the difference between hg forget and hg remove?
我希望mercurial從存儲庫的當前狀態中刪除多個文件。 但是,我希望文件存在於以前的歷史記錄中。
如何forget
和remove
不同,他們可以做我想要的嗎?
' hg forget
'只是' hg remove -Af
'的縮寫。 來自' hg remove
'幫助:
...和-Af可用於從下一版本中刪除文件而不從工作目錄中刪除它們。
底線:' remove
'從磁盤上的工作副本中刪除文件(除非您使用-Af
),' forget
'不會。
把最好的辦法是, hg forget
是相同的hg remove
除了它葉子中的文件, 你的工作副本后面。 這些文件作為未跟蹤文件留下,現在可以選擇使用.hgignore
的模式進行忽略。
換句話說,當我從你那里拉出來時,我無法判斷你是否使用了hg forget
或hg 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.