【发布时间】:2011-05-07 07:51:38
【问题描述】:
我很难理解hg forget。和git rm --cached一样吗?即会在下次提交时删除文件并停止跟踪它吗?
【问题讨论】:
-
也许这里接受的答案可以帮助你:stackoverflow.com/questions/1101167/…
我很难理解hg forget。和git rm --cached一样吗?即会在下次提交时删除文件并停止跟踪它吗?
【问题讨论】:
hg forget 告诉 mercurial 停止跟踪文件,但不会更改工作目录中的文件。
在你提交之后,它的行为就像你从未做过 hg add 一样(当然历史仍然存在)。新克隆不会在其工作目录中包含该文件,但不会在您的工作目录中删除它。
如果您想在工作目录/清单中有一个文件,但又想忽略未来的更改,那么没有简单的方法可以做到(因为通常认为这是一个坏主意),尽管您可以通过使用别名来伪造它-I hg commit。
更好的方法是在 repo 中提交您想要的文件的示例,但您希望忽略其更改,然后让您的构建系统(或您的指令)将其复制到其非示例位置。例如,有一个在 repo 中跟踪的文件 config-file.sample,然后如果 config-file 不存在,则让 setup/installation/build 执行 cp config-file.sample config-file。在您的.hgignore 中包含config-file,这样它就不会被意外添加。这为您提供了一个跟踪的基线,但不会冒险提交和推动您的本地定制。这对于数据库路径之类的事情非常常见。
【讨论】:
hg forget与git rm --cached相同(我原来的问题)
git rm --cached 与 hg forget 不同,因为后者不会删除本地文件(如果它们之前已添加并提交).. 它与 hg remove 相同...学到了艰难的路..