Add aliases for working with autosquash rebases

* Rename the `squash` alias to `prepare` to repurpose it.
* Change `squash` alias to `git commit --squash=<commit>`.
* Add `fixup` alias to `git commit --fixup=<commit>`.
* Set the `rebase.autoSquash` config option to `true`.
This commit is contained in:
Kenneth Benzie 2018-08-11 19:32:39 +01:00
parent 467789389a
commit 74a805017a
3 changed files with 29 additions and 9 deletions

View File

@ -2,14 +2,18 @@
## Aliases
A set of [Git][git] aliases which follow the idea "say what you mean" rather
than remember the plumbing term of a specific command.
A set of [Git][git] [aliases][aliases] which follow the idea "say what you mean"
rather than remembering the plumbing term of a specific command.
* `abandon` abandons all local changes leave a clean repository.
* `amend` amends the last commit, shorthand for `git commit --amend`.
* `unstage` unstage staged changes, shorthand for `git reset -q HEAD --`.
* `squash` perform an interactive rebase to squash all commits since branching,
shorthand for `git rebase -i --fork-point`.
* `amend` amends the last commit, shorthand for `git commit --amend`.
* `fixup` prepare a fixup commit for use with
`git rebase --interactive --autosquash`, shorthand for `git commit --fixup`.
* `squash` prepare a squash commit for use with
`git rebase --interactive --autosquash`, shorthand for `git commit --squash`.
* `prepare` prepare a branch for merging into another, shorthand for
`git rebase --interactive --fork-point`.
* `list` list local branches, a shorthand for `git branch`.
* `create` creates a new branch, shorthand for `git checkout -b`.
* `delete` deletes an existing branch, shorthand for `git branch -D`.
@ -31,4 +35,15 @@ than remember the plumbing term of a specific command.
`HEAD` has the subject `temp!` then `git reset --mixed HEAD~` is executed,
otherwise the message `error: commit subject is not: temp!` is output.
## Zsh Completions
The excellent [Git][git] completions provided by [Zsh][zsh] which can see
through [aliases][aliases] however some aliases involve multiple commands or
rely on the shell to function. The following aliases extend the default
[Git][git] completions.
* `git changes` completions for the branch name to compare with are provided.
[git]: https://git-scm.com
[aliases]: https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases
[zsh]: https://www.zsh.org

View File

@ -1,7 +1,6 @@
#compdef git-changes
#description Compare changes on this branch with another.
_arguments \
'1: :__git_remote_branch_names_noprefix'
_arguments '1: :__git_remote_branch_names_noprefix'
# vim: ft=zsh

10
config
View File

@ -2,9 +2,12 @@
[alias]
abandon = !git reset --hard HEAD && git clean -d -f
amend = commit --amend
unstage = reset -q HEAD --
squash = rebase -i --fork-point
amend = commit --amend
fixup = commit --fixup
squash = commit --squash
prepare = rebase -i --fork-point
list = branch
create = checkout -b
@ -49,6 +52,9 @@
[push]
default = simple
[rebase]
autoSquash = true
[user]
useConfigOnly = true