Mercurial 用未跟踪文件覆盖跟踪文件

Mercurial overwrite a tracked file with an untracked file

我有一个跟踪的数据文件,我想用更新的(当前未跟踪的)版本覆盖它

如何在不破坏历史的情况下在 Mercurial 中实现这一点?

我可以只覆盖原文件吗,只要文件名保持不变就可以了?

覆盖效果很好。唯一的问题是 mercurial 认为您已经对现有文件进行了更改。

如果新文件确实与原始文件无关,最好的方法是完全删除该文件(hg rm 文件名)并提交删除,然后创建同名文件并将其添加到 repo (hg add filename) 以便用户清楚原始文件已被删除,然后创建了一个新文件。

hg rm filename
hg commit -m "Removed filename"
echo "New file contents" > filename
hg add filename
hg commit -m "New version of filename"

当你说

hg log filename

无论如何都会保留文件的整个历史记录,并且用户可以清楚地知道旧文件已被删除并添加了新文件。