2013-03-27 35 views
22

假設我在Mercurial中輸入了hg add,並且在我的工作目錄中還有一些未被忽略的未跟蹤文件。在沒有明確輸入每個文件的名稱的情況下取消所有這些文件的最簡單方法是什麼?如何撤消Mercurial中所有添加的文件

我可以用一個命令取消它們嗎?

+0

重複的http://stackoverflow.com/questions/6183374/undoing-last-addremove-in-mercurial – Eborbob 2016-01-15 13:45:40

回答

24

前言

你必須經常問的問題,其中包含儘可能多的信息可能。因爲現在你的問題,根據某些條件,可能會有完全不同的答案。

案例之一 - 已經版本的文件沒有本地修改,只增加(而不是提交)文件

hg revert後終於將返回你的工作目錄的狀態提交,撤消所有更改它了。

案例一 - 本地修改,要保存,偶爾添加的文件

  1. 閱讀有關水銀文件集。
  2. hg forget命令中使用文件集,如hg forget "set:added()"
-1

您可以隨時重新克隆存儲庫,然後將工作文件夾中的.hg目錄替換爲新克隆中的.hg目錄(假設您沒有未完成的提交。 。)

+0

這似乎理論上可行但可能容易出錯。我猜如果你有大量的本地修改,你不想在新的克隆中手動複製,這可能是最好的選擇。反正創意解決方案! – DaveInCaz 2017-12-07 16:14:12

19

使用hg reverthg forget上的文件(包括爲你做跑hg add文件相同)。爲了避免打字文件名,你可以使用一個fileset這樣的:

$ hg revert "set:added()" 

這將恢復文件恢復到它的工作拷貝父版本的樣子,即,它會再次成爲未知數。

+0

嗨,馬丁。據推測,這不僅僅是「hg revert -a」,這也會恢復對現有文件的更改,更正確? – 2016-06-04 22:56:24

+0

@FaheemMitha確實。 – 2016-06-08 08:20:52

相關問題