假设我正在开发一个项目,其中包含文件 A、B 和 C。在添加功能、修改 A 和 B 时,我已经添加了一半,然后才意识到有些东西需要清理。鉴于这种情况,最好中断功能工作来进行清理。这涉及到对 A、B 和 C 进行更改。
完成该功能后,我想 checkin 我的代码。可以这么说,有两组不同的更改:用于添加功能的更改和用于清理的更改。它们在任何方面都不冲突。是否可以单独提交这些更改,以获得干净的 repo 历史记录?
或者,如果我决定在完成后立即 checkin 清理工作,但不想 checkin A 和 B 中已完成一半的功能,该怎么办?
我不确定是否可以在 Mercurial 或 SVN 中执行此操作,但我有兴趣了解其中任何一个。 (TortoiseHg 怎么样?)
最佳答案
是的,您可以使用 Mercurial 的 hg record
来做到这一点。它被认为是一个扩展,但它与常规包一起分发。基本上,您运行该命令,它会询问您有关每个文件的信息(您想从这里提交任何内容吗?)。如果您回答"is",它会询问您是否要提交每个 block (行组)。您还可以在特定文件上运行它。例如:
hg record A B C
在这种情况下,它不会费心询问您对其他文件的更改。
每个帅哥的选项是:
y - record this change
n - skip this change
s - skip remaining changes to this file
f - record remaining changes to this file
d - done, skip remaining changes and files
a - record all changes to all remaining files
q - quit, recording no changes
? - display help
编辑:TortoiseHg 有一个名为 Change Selection 的集成功能,基本上相当于 record
的 GUI。
关于svn - Mercurial/SVN : Multiple commits from one set of differences?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3225495/