当我使用水银命令(hg commit --amend
)时,它总是打开编辑器窗口。在git中,我可以通过git commit -a --amend -CHEAD
来避免这种情况,是否有水银等价的东西?
答案 0 :(得分:5)
鉴于您拥有并正在使用hg commit --amend
,最简单的方法是诱使Mercurial使用不执行任何操作的编辑器,从而使消息文件保持不变并因此可用:
$ hg --config ui.editor=true commit --amend
saved backup bundle to [long path redacted]
也就是说,Mercurial did 打开了一个“编辑器窗口”(或编辑器命令,无论如何),只是这个/bin/true
–立即说了“一切正常”,交互式终端。
注意:如果您的环境中设置了HGEDITOR
,则实际上将覆盖ui.editor
:
def geteditor(self):
'''return editor to use'''
if pycompat.sysplatform == 'plan9':
# vi is the MIPS instruction simulator on Plan 9. We
# instead default to E to plumb commit messages to
# avoid confusion.
editor = 'E'
else:
editor = 'vi'
return (encoding.environ.get("HGEDITOR") or
self.config("ui", "editor") or
encoding.environ.get("VISUAL") or
encoding.environ.get("EDITOR", editor))
如此:
HGEDITOR=true hg commit --amend
将更可靠地执行相同的操作(并且键入的次数更少),但是在文档中并未以这种方式指出,只是说HGEDITOR
已过时。
答案 1 :(得分:3)
尽管hg commit
仍被标记为实验性的,但使用它从未遇到任何问题。但是,值得注意的是,使用hg commit --amend -m "$(hg log -l 1 --template '{desc}')" --date now
hg commit --amend -m "$(cat $(hg root)/.hg/last-message.txt)" --date now
时,始终可以通过指定一条消息来避开编辑器窗口。对于修订,保留先前的消息可能很有意义,可以通过多种方式来完成,但是以下示例说明了两种可靠的方法:
HGEDITOR=true hg commit --amend --date now
但是,出于实际目的,如果您的平台支持它,则使用HGEDITOR会更简单:
<form>
OTHER FORM STUFF
<div novalidate role="form" method="post" id="fake_form_id_0" data-url="YOUR_POST_URL">
THIS FORM STUFF
</div>
</form>
答案 2 :(得分:2)
在水银4.3.1中添加了一个实验性扩展,称为“修改”。它执行与commit --amend相同的操作,只是不打开注释的编辑窗口。
hg amend
它被标记为实验性的,但是我经常使用它而没有任何问题。
还有一个unamend
命令,它将“撤消对当前变更集的最新修改操作”。