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.
Ustable:
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
githubandbitbucketcommands. - 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.
gitnowShow the working tree status in compact way.
state
Current working tree status:
## master...origin/master
M README.md
M conf.d/gitnow.fishStage 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-errorsUnstage 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 HEADCommit 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 --amendAdd and commit all changes to the repository.
Note: This command does stage and then commit .. No flags supported.
# stage && commit .
commit-allPull changes from remote server but saving uncommitted changes.
This command makes this for you:
- Save your uncommitted changes locally using
--autostashoption. - Local changes you made will be rebased (
---rebaseoption) on top of the remote changes. - Return your uncommitted changes locally again.
Auto mode:
pullpull <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.
upstreamSwitch 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_branchCreates 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_branchCreates 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_branchCreates 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_branchCreates 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_branchShows 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 settedClone a Bitbucket Cloud repository using SSH.
Examples:
bitbucket username/repo-name
bitbucket username repo-name
bitbucket repo-name # requires a `user.bitbucket` username settedNote: 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