Speed up your Git workflow. 🐠
GitNow contains a command set that provides high-level operations on the top of Git.
A Fish shell alternative inspired by git-friendly.
With Fisher:
Stable:
fisher add joseluisq/gitnow@2.1.1
Note: Replace the number above with your preferred release.
Unstable:
fisher add joseluisq/gitnow
Command | Shortcut | Description |
---|---|---|
gitnow | Show available commands and version info. | |
Git | ||
state | Alt + S | Show the working tree status in a compact way. |
stage | Alt + E | Stage files in current working directory. |
unstage | Ctrl + S | Unstage files in current working directory. |
commit | Commit changes to the repository. | |
commit-all | Ctrl + C | Add and commit all changes to the repository. |
pull | Alt + D | Pull changes from remote server but saving uncommitted changes. |
push | Alt + P | Push commit changes to remote repository. |
upstream | Alt + U | Commit all changes and push them to remote server. |
move | Moves from current branch to another but stashing your changes. | |
logs | Alt + L | Shows logs in a fancy way. |
Gitflow | ||
feature (1) | Alt + F | Creates a new feature (Gitflow) branch from current branch. |
hotfix (1) | Alt + H | Creates a new hotfix (Gitflow) branch from current branch. |
bugfix | Creates a new bugfix (Gitflow) branch from current branch. | |
release | Creates a new release (Gitflow) branch from current branch. | |
Bonus | ||
github | Clone a GitHub repository using SSH. | |
bitbucket | Clone a Bitbucket Cloud repository using SSH. |
- (1) This command key binding will creates a new branch taking as name some text of the clipboard.
- Skip the password request creating a SSH key for your Github or Bitbucket account.
- SSH setup is required for using
github
andbitbucket
commands. - Take adventage of keybindings in order to get faster operations.
For a custom configuration (for example keybindings) place a .gitnow file in your home directory ~/.gitnow
.
.gitnow file contains a [ keybindings ] section with default shortcuts (key-value pairs).
You can add, edit or remove shortcuts on demand. For custom keys run the built-in function fish_key_reader
in your terminal then press the key (or key's combinations) to get the right sequence bind char(s). Finally set it to your preferred command in ~/.gitnow
file.
Show available commands and version info.
gitnow
Show the working tree status in compact way.
state
Current working tree status:
## master...origin/master
M README.md
M conf.d/gitnow.fish
Stage files in current working directory.
Note: This command does git add .
by default. Add your git add
flags as usual to overwrite it.
# a) git add . (by default)
stage
# b) custom 1
stage README.md LICENSE.md
# c) custom 2
stage . --ignore-errors
Unstage files in current working directory.
Note: This command does git reset .
by default. Add your git reset
flags as usual to overwrite it.
# a) git reset . (by default)
unstage
# b) custom 1
unstage README.md LICENSE.md
# c) custom 2
unstage --soft HEAD
Commit changes to the repository.
Note: This command does git commit
only. Add your git commit
flags as usual to overwrite it.
commit
commit README.md
commit .
commit --amend
Add and commit all changes to the repository.
Note: This command does stage
and then commit .
. No flags supported.
# stage && commit .
commit-all
Pull changes from remote server but saving uncommitted changes.
This command makes this for you:
- Save your uncommitted changes locally using
--autostash
option. - Local changes you made will be rebased (
---rebase
option) on top of the remote changes. - Return your uncommitted changes locally again.
Auto mode:
pull
pull <branch_name>
pull <remote_origin> <branch_name>
Manual mode:
pull <remote_origin> <branch_name> --verbose
pull
📥 Pulling changes
Arguments mode: Auto
Default arguments: --rebase --autostash
Remote: origin (https://github.com/joseluisq/gitnow.git)
Branch: master
From https://github.com/joseluisq/gitnow
* branch master -> FETCH_HEAD
Created autostash: 473315a
HEAD is now at 9de2f93 update commands
Current branch master is up to date.
Applied autostash.
Push commit changes to remote repository.
Note: This command is equivalent to git push --set-upstream [your arguments...]
.
# Auto mode (current origin and branch)
push
# Manual mode
push <origin_name> <branch_name> <--some_other_flags>
Commit all changes and push them to remote server.
Note: This command does commit-all
and then push
. No flags supported.
upstream
Switch from current branch to another but stashing uncommitted changes
Note: This command does git stash
then git checkout <other_branch>
and finally git stash pop
.
It also will make sure first that <other_branch>
matchs with your existing branches. Use also -u
(or --upstream
) flag to fetch a remote branch.
move other_branch
# Branch `ghost_branch` was not found. No possible to switch.
move ghost_branch
# With -u flag the branch will be fetched from remote origin
move -u feature/new_remote_branch
Creates a new feature (Gitflow) branch from current branch.
Note: Your new branch will always be lowercase without special characters or whitespaces (underscores instead).
feature feat1
# > feature/feat1
feature "This is my New FEATURE Branch"
# > feature/this_is_my_new_feature_branch
Creates a new hotfix (Gitflow) branch from current branch.
Note: Your new branch will always be lowercase without special characters or whitespaces (underscores instead).
hotfix fix1
# > hotfix/fix1
hotfix "This is my New FIX Branch"
# > hotfix/this_is_my_new_fix_branch
Creates a new bugfix (Gitflow) branch from current branch.
Note: Your new branch will always be lowercase without special characters or whitespaces (underscores instead).
bugfix fix1
# > bugfix/fix1
bugfix "This is my New bugFIX Branch"
# > bugfix/this_is_my_new_bugfix_branch
Creates a new release (Gitflow) branch from current branch.
Note: Your new branch will always be lowercase without special characters or whitespaces (underscores instead).
release fix1
# > release/fix1
release "This is my New release Branch"
# > release/this_is_my_new_bugfix_branch
Shows logs in a fancy way.
Note: This command does git log HEAD
by default using a pretty format. Add your git log
flags as usual to overwrite it.
# shows all logs (default)
logs
# shows logs using git log parameters and flags (custom)
logs 8b09088
logs --before "yesterday" --after="1 week ago"
Clone a GitHub repository using SSH.
Examples:
github username/repo-name
github username repo-name
github repo-name # requires a `user.github` username setted
Clone a Bitbucket Cloud repository using SSH.
Examples:
bitbucket username/repo-name
bitbucket username repo-name
bitbucket repo-name # requires a `user.bitbucket` username setted
Note: For cloning some repo only, it's necessary to set your Github or Bitbucket username to global config before like:
# a) GitHub
git config --global user.github "your_username"
# b) Bitbucket
git config --global user.bitbucket "your_username"
- Git Cheat Sheet — Another Git cheat sheet yet.
- Git useful aliases — Set of useful Git aliases.
- Gitflow
Pull requests and issues are welcome.
MIT license
© 2016-present Jose Quintana