2010-11-09 74 views
8

我很难理解hg forget。是否与git rm --cached相同?即将删除与下一个提交文件并停止跟踪它?与'git rm --cached`是`hg forget`?

+2

也许这里接受的答案可以帮助你:http://stackoverflow.com/questions/1101167/what-is-the-difference-between-hg-forget-and-hg-remove – ZeissS 2010-11-09 15:39:30

回答

9

hg forget告诉mercurial停止跟踪文件,但不会更改工作目录中的文件。

提交后,它会表现得好像你从未做过hg add(尽管当然历史仍然存在)。新克隆将不会在其工作目录中存在该文件,但它不会在您的工作目录中删除。

如果你想拥有在工作目录/清单文件,但想忽略未来的变化,还有通过混淆的东西没有简单的方法来做到这一点(因为它通常被认为是一个坏主意),虽然你可以假的hg commit上使用-I

更好的方法是在repo中提交你想要的文件样本,但是你想要忽略其中的更改,然后让你的构建系统(或你的指令)将它复制到它的非样本位置。例如,有一个文件config-file.sample,它在回购中被跟踪,然后如果config-file不存在,则进行安装/安装/编译做一个cp config-file.sample config-file。在您的.hgignore中包含config-file,以免意外添加。这给你一个跟踪的基准,但不承担提交和推送你的本地定制风险。这通常用于数据库路径等事情。

+0

我认为git rm --cached就像hg rm - 在 – tonfa 2010-11-09 16:02:35

+0

之后,但是它会从下一次提交中被删除,并且会被删除?你描述它的方式正是我的困惑来自的地方。停止跟踪:这是否意味着将来的更改将被忽略或将文件从清单中删除 – knittl 2010-11-09 16:02:41

+1

从清单中删除。正如我的陈述“新克隆人在他们的工作目录中没有该文件”所证​​明的那样。 – 2010-11-09 16:47:11