I am editing files opened split into three windows. I want to commit those into the repository. Is there any commands to do that?
How can I commit files currently displayed in Vim with fugitive?
Asked Answered
There are a few ways to accomplish this task. I will outline the most interactive method which uses :Git
.
- Open up the status window via
:Git
- Move between files via
<c-n>
/<c-p>
- Stage/unstage files via
-
- Start committing via
cc
whilst in the status window - Create commit message and save and close window. (I prefer
:x
) - You can also use
zj
andzk
to move between sections - Using
-
on a section will stage/unstage all the files in that section
For more help with :Git
see :h :Git
or :G
when in the :Git
buffer.
Can use :Gwrite
or :Gw
and :windo
to skip the :Git
window to make this a bit faster.
:windo Gw
:Git commit
You can also skip the whole commit window by using the -m
flag. e.g. :Git commit -m "A short message"
I recommend official repo on GitHub and Vimcasts videos on Fugitive: The Fugitive Series - a retrospective
To learn more see:
:h fugitive
:h :Git
:h :Gw
:h :Git commit
:h :windo
:h :x
You may wan to do verbose commit
cvc
in the :Gstatus
window or :Gcommit --verbose
. It will open a commit message in a new tab with more your commit details –
Fibroid Without fugitive:
:windo !git add %
:!git commit -m "My message goes here"
The last command could be replaced with:
:!git commit --interactive
© 2022 - 2024 — McMap. All rights reserved.
:x
to save the commit message, the status window closes too. But I often have both the status window open and the index and working copy diffed. I'm adding changes piecemeal usingdiffget
(the improved version of the--patch
workflow described in the 2nd vimcast). So what I really want is to be able to commit (and I do want to use the full window to compose my possibly multi-line message), but I don't want the status window to close after saving. Is this possible? – Zumwalt