在没有编辑器窗口打开的情况下修改Mercurial提交?

A. *_* K. 3 git version-control mercurial git-amend

当我使用mercurial command(hg commit --amend)时,它总是打开编辑器窗口.在git中我可以避免这种情况git commit -a --amend -CHEAD,是否有类似于mercurial的东西?

tor*_*rek 5

鉴于您已经并且正在使用,hg commit --amend最简单的方法是使Mercurial使用不执行任何操作的编辑器,使消息文件保持不变并因此可用:

$ hg --config ui.editor=true commit --amend
saved backup bundle to [long path redacted]
Run Code Online (Sandbox Code Playgroud)

也就是说,Mercurial 确实打开了一个"编辑窗口"(或者编辑命令,无论如何),只是这个 - /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))
Run Code Online (Sandbox Code Playgroud)

所以:

HGEDITOR=true hg commit --amend
Run Code Online (Sandbox Code Playgroud)

将更可靠地做同样的事情(并且输入更少一些),但是在文档中没有这样说出来,只说不HGEDITOR推荐使用.


Cra*_*aig 5

Mercurial 4.3.1 中添加了一个名为“amend”的实验性扩展。它执行与 commit --amend 相同的操作,但不打开注释的编辑窗口。

hg amend
Run Code Online (Sandbox Code Playgroud)

它被标记为实验性的,但我经常使用它,没有任何问题。

还有一个unamend命令将“撤消对当前变更集的最近修改操作”。