Skip to content
/ gitnow Public
forked from joseluisq/gitnow

Speed up your Git workflow. 🐠

License

Notifications You must be signed in to change notification settings

ivaaaan/gitnow

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

94 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

GitNow Build Status Releases

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.

Install

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.

Commands

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.

Tips

  • Skip the password request creating a SSH key for your Github or Bitbucket account.
  • SSH setup is required for using github and bitbucket commands.
  • Take adventage of keybindings in order to get faster operations.

Configuration

For a custom configuration (for example keybindings) place a .gitnow file in your home directory ~/.gitnow.

Keybindings

.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.

Usage

gitnow

Show available commands and version info.

gitnow

state

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

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

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

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

untracked

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

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

commit-all

Add and commit all changes to the repository.

Note: This command does stage and then commit .. No flags supported.

# stage && commit .
commit-all

pull

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

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>

upstream

Commit all changes and push them to remote server.

Note: This command does commit-all and then push. No flags supported.

upstream

move

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

assume

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

feature

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

hotfix

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

bugfix

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

release

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

logs

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"

github

Clone a GitHub repository using SSH.

Examples:

github username/repo-name
github username repo-name
github repo-name # requires a `user.github` username setted

bitbucket

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"

Bonus

Contributions

Pull requests and issues are welcome.

License

MIT license

Β© 2016-present Jose Quintana

About

Speed up your Git workflow. 🐠

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 100.0%