【问题标题】:is `hg forget` the same as `git rm --cached`?`hg forget` 和 `git rm --cached` 一样吗?
【发布时间】:2011-05-07 07:51:38
【问题描述】:

我很难理解hg forget。和git rm --cached一样吗?即会在下次提交时删除文件并停止跟踪它吗?

【问题讨论】:

标签: git mercurial dvcs


【解决方案1】:

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,这样它就不会被意外添加。这为您提供了一个跟踪的基线,但不会冒险提交和推动您的本地定制。这对于数据库路径之类的事情非常常见。

【讨论】:

  • 我认为 git rm --cached 就像 hg rm --after
  • 但它会从下一次提交中删除吗?你描述它的方式,正是我困惑的来源。停止跟踪:这是否意味着将来的更改将被忽略或将从清单中删除文件
  • 从清单中删除。正如我的陈述“新克隆不会在其工作目录中包含该文件”所证​​明的那样。
  • 备案:hg forgetgit rm --cached相同(我原来的问题)
  • git rm --cachedhg forget 不同,因为后者不会删除本地文件(如果它们之前已添加并提交).. 它与 hg remove 相同...学到了艰难的路..
猜你喜欢
  • 2012-09-15
  • 1970-01-01
  • 1970-01-01
  • 2011-08-13
  • 2021-04-02
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 2016-01-30
相关资源
最近更新 更多