Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Mercurial中仅提交文件重命名,而不提交实际内容更改_Mercurial_Rename - Fatal编程技术网

如何在Mercurial中仅提交文件重命名,而不提交实际内容更改

如何在Mercurial中仅提交文件重命名,而不提交实际内容更改,mercurial,rename,Mercurial,Rename,我在repo中重命名了几个文件,并对它们进行了一些更改。现在,我只想提交我重命名文件的事实,然后分别提交更改。这在Mercurial中可能吗 我看到的一个选项是搁置所有更改,然后手动记录所有重命名。我想知道是否有一种更自动化、更不容易出错的方法。Mercurial没有内置的方法来实现这一点-commit将始终记录重命名和新文件内容 但是,您可以通过几个步骤来完成。如果工作副本父级为X,则执行以下操作: 提交混合重命名和更改,称为Y 提取重命名并将其提交到X,称此提交为Z 将Y(混合提交)重设为Z

我在repo中重命名了几个文件,并对它们进行了一些更改。现在,我只想提交我重命名文件的事实,然后分别提交更改。这在Mercurial中可能吗


我看到的一个选项是搁置所有更改,然后手动记录所有重命名。我想知道是否有一种更自动化、更不容易出错的方法。

Mercurial没有内置的方法来实现这一点-commit将始终记录重命名和新文件内容

但是,您可以通过几个步骤来完成。如果工作副本父级为X,则执行以下操作:

  • 提交混合重命名和更改,称为Y

  • 提取重命名并将其提交到X,称此提交为Z

  • 将Y(混合提交)重设为Z(仅重命名)。Rebase足够聪明,可以看到Y中的重命名已经在Z中

  • 在命令行上,它如下所示:

    $ hg commit -m "mixed commit with both changes and renames"
    $ hg update -r "p1(.)"
    $ hg diff -c tip | grep "^\(diff\|rename\)" | hg import -m 'renames' -
    $ hg rebase -s -2 -d .
    

    这就成功了。第一条提交消息看起来很奇怪,因为提交只包含更改:)谢谢!是的,您可能应该使用比我上面建议的更好的提交消息:)