mst*_*rap 209 mercurial commit git-amend mercurial-commit
我正在寻找git commit --amendMercurial 的反向部分,即修改我的工作副本链接的提交的方法.该修订程序的要求是:
如果可能,它不应该要求任何扩展.它不能要求非默认扩展,即没有官方Mercurial安装附带的扩展.
如果修改提交是我当前分支的一个负责人,则不应创建新的头.如果提交不是头,则可以创建新头.
该程序应该是安全的,如果由于任何原因修改失败,我希望在修改之前恢复相同的工作副本和存储库状态.换句话说,如果修改本身可能失败,则应该有一个故障安全过程来恢复工作副本和存储库状态.我指的是修改程序性质的"失败"(例如冲突),而不是与文件系统相关的问题(如访问限制,无法锁定文件进行写入,......) )
更新(1):
更新(2):
Chr*_*ips 286
随着Mercurial 2.2的发布,您可以使用--amend选项hg commit来更新当前工作目录的最后一次提交
从命令行参考:
--amend标志可用于修改工作目录的父级,其中包含父级中的更改以及当前由hg status报告的更改(如果有).旧提交存储在.hg/strip-backup的备份包中(请参阅hg help bundle和hg help unbundle有关如何恢复它).
除非指定,否则消息,用户和日期取自修订的提交.如果未在命令行中指定消息,编辑器将打开修改后的提交消息.
最棒的是,这种机制是"安全的",因为它依赖于相对较新的"阶段"功能来阻止更新,这些更新将改变已经在本地存储库之外提供的历史记录.
krt*_*tek 51
在Mercurial中有3个选项可以编辑提交:
hg strip --keep --rev -1撤消last(1)commit(s),这样你就可以再次执行(有关更多信息,请参阅此答案).
使用Mercurial附带的MQ扩展
即使Mercurial没有附带,Histedit扩展也值得一提
您还可以查看Mercurial wiki 的" 编辑历史记录"页面.
简而言之,编辑历史真的很难并且气馁.如果你已经推动了你的改变,除了你完全掌控所有其他克隆外,你几乎无能为力.
我并不是很熟悉这个git commit --amend命令,但是AFAIK,Histedit似乎是最接近的方法,但遗憾的是它并没有随Mercurial一起提供.MQ使用起来非常复杂,但你几乎可以用它做任何事情.
Cri*_*scu 38
hg commit --amend:这也适用于TortoiseHG的GUI(我使用的是v2.5):
切换到"提交"视图,或在工作台视图中选择"工作目录"条目."提交"按钮有一个名为"修改当前版本"的选项(单击按钮的下拉箭头即可找到它).

||
||
\/
Run Code Online (Sandbox Code Playgroud)

警告:
只有当mercurial版本至少为2.2.0时才会启用此额外选项,如果当前版本不是公共版本,则不是补丁且没有子级.[...]
单击该按钮将调用'commit --amend'来"修改"修订版.
有关THG dev频道的更多信息
我正在调整krtek所写的内容.更具体地解决方案1:
假设:
解:
hg rollback撤消上次提交回滚确实撤消了上一次操作.它的工作方式非常简单:HG中的正常操作只会附加到文件中; 这包括提交.Mercurial会跟踪最后一个事务的文件长度,因此可以通过将文件截断回原来的长度来完全撤消一步.
假设您还没有传播您的更改,那么您可以执行此操作.
添加到.hgrc:
[extensions]
mq =
Run Code Online (Sandbox Code Playgroud)在您的存储库中:
hg qimport -r0:tip
hg qpop -a
Run Code Online (Sandbox Code Playgroud)
当然你不需要从修订版零开始或弹出所有补丁,最后只需要一个pop(hg qpop)就足够了(见下文).
删除.hg/patches/series文件中的最后一个条目,或者您不喜欢的补丁.重新排序也是可能的.
hg qpush -a; hg qfinish -a.diff仍在.hg/patches 中的文件(未应用的补丁)(在您的情况下应该是一个).如果你不想来收回所有的补丁,您可以通过使用编辑hg qimport -r0:tip(或类似),然后编辑的东西,用hg qrefresh的修改合并到堆栈中最上面的补丁.读hg help qrefresh.
通过编辑.hg/patches/series,您甚至可以删除多个补丁,或重新排序.如果你的上一次修订是99,你可以使用hg qimport -r98:tip; hg qpop; [edit series file]; hg qpush -a; hg qfinish -a.
当然,这个程序非常沮丧和冒险.在执行此操作之前,请备份所有内容!
作为旁注,我在私人存储库上完成了数十万次.
| 归档时间: |
|
| 查看次数: |
95658 次 |
| 最近记录: |