How can I combine these git commands?

You could define a git alias calling a script

Since version 1.5.0, Git supports aliases executing non-git commands, by prefixing the value with "!".
Starting with version 1.5.3, git supports appending the arguments to commands prefixed with "!", too.

Be defining a function within your alias, you can avoid the explicit call to 'sh -c'

[alias]
        publish = "!f() { git add . ; git commit -m \"$1\" ; git push ; cap deploy ; }; f"

or, after the suggestion of Pod in his answer:

[alias]
        publish = "!f() { git commit -a -m \"$1\" ; git push ; cap deploy ; }; f"

(to be tested)


You can also combine the frequent commands in one line:

$ git add . | git commit -m 'Some message' | git push | cap deploy

Next time you just need the Up arrow to get it back, then push Enter


This is not an answer to your question (my answer would be: make a bash/batch script).

I say this: Don't do git add . This will add every change and all untracked files in the current directory and it's descendants. You might not want these untracked files in your directory and you'll accidently add them, especially if you're typing ti as much as you claim you are.

Instead do git add -u. Even better, skip the add stage and do git commit -a -m"blah", which saves you an entire line, which is apparently something you are keen to avoid.