如何使用fugitive在Vim中提交当前显示的文件?

24

我正在编辑分成三个窗口打开的文件。我想提交这些到代码库。是否有相应的命令可以执行此操作?

2个回答

60

有几种方法可以完成此任务。我将概述使用 :Git 的最互动方法。

  • 通过 :Git 打开状态窗口
  • 通过<c-n>/<c-p>在文件之间移动
  • 通过 - 暂存/取消暂存文件
  • 在状态窗口中按下 cc 开始提交
  • 创建提交消息并保存和关闭窗口。(我更喜欢 :x
  • 您还可以使用 zjzk 在各个部分之间移动
  • 在一个部分上使用 - 将会暂存/取消暂存该部分中的所有文件

有关 :Git 的更多帮助,请参见:h :Git 或在 :Git 缓冲区中使用 :G

可以使用 :Gwrite:Gw:windo 跳过 :Git 窗口以加快速度。

:windo Gw
:Git commit

你可以使用-m标记跳过整个提交窗口,例如::Git commit -m“简短的消息”

我建议参考GitHub上的官方仓库和关于Fugitive的Vimcasts视频The Fugitive Series - a retrospective。要了解更多信息,请参见:

:h fugitive
:h :Git
:h :Gw
:h :Git commit
:h :windo
:h :x

非常有帮助。我唯一的抱怨是,在执行:x保存提交消息后,状态窗口也关闭了。但我经常同时打开状态窗口和索引以及工作副本的差异。我正在使用diffget(第2个vimcast中描述的“--patch”工作流的改进版本)逐步添加更改。所以我真正想要的是能够提交(我确实想使用完整的窗口来组成我的可能是多行的消息),但我不希望在保存后关闭状态窗口。这可行吗? - Jonah
2
你可能想在 :Gstatus 窗口或 :Gcommit --verbose 中进行详细提交 cvc。这将在新标签页中打开一个提交消息,其中包含更多的提交细节。 - Peter Rincker

3

无逃生路:

:windo !git add %
:!git commit -m "My message goes here"

最后一个命令可以替换为:
:!git commit --interactive

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接