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/[email protected]
Note: Replace the number above with your preferred release.
Latest changes:
fisher add joseluisq/gitnow
Note: Use that method if you don't want to wait for a new release.
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 + E | Unstage files in current working directory. |
show | Alt + M | Show commit detail objects. |
untracked | Check for untracked files and directories. | |
commit | Commit changes to the repository. | |
commit-all | Alt + 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. | |
assume | Ignores changes in certain files temporarily. | |
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
Show commit detail objects.
Note: This command does git show --compact-summary HEAD
by default. Add your git show
flags as usual to overwrite it.
# a) Default
show
# b) Custom flags
show --compact-summary HEAD~1
Check for untracked files and directories that could be removed of current working directory.
Notes:
- This command does
git clean --dry-run -d
only. - It doesn't remove anything, just makes a clean checking of files and directories that could be removed.
- No flags are supported.
untracked
# Would remove .file1
# Would remove dir1/
# Would remove file2
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
(possible to disable). It also takes care that <other_branch>
matches with the existing local branches.
Additional options:
- Use
-u
(or--upstream
) flag to fetch a remote branch. - Use
-n
(or--no-apply-stash
) flag to prevent stashed changes to be applied.
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
# With -n flag stashed changes will not be applied.
move -n feature/new_remote_branch
# Possible to combine two option flags
move -un feature/another_remote_branch
Ignore changes in certain files temporarily.
Note: This command performs git update-index --[no-]assume-unchanged
to ignore changes in certain files temporarily or revert those changes back.
Options:
-n
--no-assume
: No assume unchanged files to be ignored (revert option)-h
--help
: Show information about the options for this command
# a) Ignore files temporarily
assume Cargo.toml README.md
# b) Revert file ignored changes
assume -n Cargo.toml README.md
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