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

Mercurial使用未跟踪的文件覆盖跟踪的文件,mercurial,dvcs,Mercurial,Dvcs,我有一个跟踪数据文件,我想用一个更新的(当前未跟踪的)版本覆盖它 你如何在mercurial中实现这一点而不破坏历史 只要文件名保持不变,并且一切正常,我就可以覆盖原始文件吗?覆盖就可以了。唯一的问题是mercurial认为您已经对现有文件进行了更改 如果新文件确实与原始文件无关,那么最好的方法是完全删除该文件(hg rm文件名)并提交删除操作,然后使用相同的名称创建文件并将其添加到repo(hg add文件名),这样用户就可以清楚地看到原始文件已被删除,然后创建了一个新文件 hg rm fil

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

你如何在mercurial中实现这一点而不破坏历史


只要文件名保持不变,并且一切正常,我就可以覆盖原始文件吗?

覆盖就可以了。唯一的问题是mercurial认为您已经对现有文件进行了更改

如果新文件确实与原始文件无关,那么最好的方法是完全删除该文件(hg rm文件名)并提交删除操作,然后使用相同的名称创建文件并将其添加到repo(hg add文件名),这样用户就可以清楚地看到原始文件已被删除,然后创建了一个新文件

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

文件的整个历史记录都被保留下来,用户可以清楚地看到,旧文件被删除,新文件被添加。

太好了。新文件与旧文件密切相关,因此我认为覆盖就是答案。但是,如果两个文件完全不同,请记住方法。只需在覆盖后检查日志,正如您所描述的,即历史不受影响,所以一切正常