【问题标题】:How do I get out of a messy merge when using vimdiff使用 vimdiff 时如何摆脱混乱的合并
【发布时间】:2020-03-13 22:18:27
【问题描述】:

我在 mercurial 中使用 vimdiff 作为我的合并工具。有时我会开始一个变基,结果很混乱,我只是想尝试摆脱这个过程并做一些不同的事情。我最终这样做的方式通常只是发送垃圾邮件:qa,直到我通过所有冲突文件,但对于更大的冲突集,这可能意味着我这样做了很长一段时间。有时,如果我很幸运,我可以在下一次冲突在vim 加载之前的时间内潜入Ctrl+C,但通常我最终只会把更大的事情搞砸,我的整个终端会话都被冲洗掉了。

在使用vimdiff 时,有没有更优雅的方式退出混乱的变基?

【问题讨论】:

    标签: mercurial rebase vimdiff


    【解决方案1】:

    vimdiff,您可以使用:cq 命令退出 Vim,并显示错误代码。

    Mercurial 应该能够知道发生了这种情况并解释为您告诉它停止操作,让您有机会中断合并操作。

    【讨论】:

    • 不幸的是,这不起作用。它会退出并导致我当前尝试合并的文件失败,但随后 mercurial 会很快进入下一个冲突。
    • @Ziewvater 啊,真糟糕......它是专门为这种你需要告诉它停止和休息的场合而制作的。遗憾的是,Mercurial 似乎没有那样处理它。我用 Ctrl+Z 建议的另一种方式怎么样?
    • 刚刚对此发表了评论!它的效果要好得多,尽管它并不完全干净。这可能是因为我正在使用其他包装工具,我不确定,但它更易于管理
    【解决方案2】:

    您可以使用 Ctrl+Z 挂起前台进程(即vimdiff,还有产生它的hg),让您回到外壳。

    此时,您可以使用kill %%kill -INT %% 终止前台作业(SIGINT 相当于按Ctrl+C),这应该终止 hg 进程并使用 SIGHUP(挂断)终止 vimdiff

    通过暂停vimdiff,您可以找到时间发送hg,相当于Ctrl+C

    【讨论】:

    • 在执行此操作后尝试运行hg rebase --abort 时,我仍然会遇到一些进程锁定文件,但它比我之前所做的要好得多。我可以通过杀死hg rebase --abort 卡住时命名的 PID 以及 killing 其他剩余进程来释放锁。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多