GitImproved is a wrapper script for Git command. It provides a much better interface than Git.
- Intuitive
- Easy to understand
- Categorized commands
Command comparison:
Git Improved | Git |
---|---|
gi |
git status -sb . |
gi sw <branch> |
git checkout <branch> |
gi fork <branch> |
git checkout -b <branch> |
gi join |
git checkout -; git merge <branch> |
gi pick . |
git add -i . |
gi track <newfile> |
git add <newfile> |
gi stage <file> |
git add <file> |
gi staged |
git diff --cached |
gi unstage |
git reset HEAD |
gi commit:rollback |
git reset HEAD^ |
gi file:restore |
git reset --hard |
gi cc "<comment>" |
git commit -m "<comment>" |
gi correct |
git commit --ammend |
gi fixup <commit> |
git commit --fixup=<commit> |
gi changes |
git diff |
gi branches |
git branch -a |
gi commits |
git log -p |
gi tags |
git tag -l |
gi tag:upload |
git push --tags |
gi hist |
git git log --oneline --graph ... |
gi histedit |
git rebase -i |
gi histedit:resume |
git rebase --continue |
gi histedit:cancel |
git rebase --abort |
...(and more)... | .... |
GitImproved is also an example program of Benry-CmdApp framework.
Benry-CmdApp is a framework for commad-line applications which take sub-commands (like git
, docker
, npm
, etc).
Links:
- Document: https://kwatch.github.io/git-improved/
- GitHub: https://github.com/kwatch/git-improved
- Changes: https://github.com/kwatch/git-improved/blob/main/CHANGES.md
GitImproved requires Ruby >= 2.3.
$ gem install git-improved
$ gi --version
0.2.0
## help
$ gi -h | less # help message
$ gi -l | less # list actions
$ gi : # list top-level categories of actions
$ gi commit: # list actions under 'commit' category
$ gi -h commit:create # help of an action
## create a repo
$ mkdir mysample # or: gi repo:clone github:<user>/<repo>
$ cd mysample
$ gi repo:init -u yourname -e [email protected]
## add files
$ vi README.md # create a new file
$ gi track README.md # register files into the repository
$ gi # show current status
$ gi cc "add README file" # commit changes
## edit files
$ vi README.md # update an existing file
$ gi stage . # add changes into staging area
$ gi # show current status
$ gi staged # show changes in staging area
$ gi cc "update README file" # commit changes
## upload changes
$ gi repo:remote:seturl github:yourname/mysample
$ gi upload # upload local commits to remote repo
$ gi branch:
Actions:
branch:checkout : create a new local branch from a remote branch
branch:create : create a new branch, not switch to it
branch:current : show current branch name
branch:delete : delete a branch
branch:echo : print CURR/PREV/PARENT branch name
branch:fork : create a new branch and switch to it
branch:join : merge current branch into previous or other branch
branch:list : list branches
branch:merge : merge previous or other branch into current branch
branch:parent : show parent branch name (EXPERIMENTAL)
branch:previous : show previous branch name
branch:rebase : rebase (move) current branch on top of other branch
branch:rename : rename the current branch to other name
branch:reset : change commit-id of current HEAD
branch:switch : switch to previous or other branch
branch:update : git pull && git stash && git rebase && git stash pop
branch:upstream : print upstream repo name of current branch
Aliases:
branch : alias for 'branch:create'
fork : alias for 'branch:fork'
join : alias for 'branch:join'
branches : alias for 'branch:list'
merge : alias for 'branch:merge'
sw : alias for 'branch:switch'
switch : alias for 'branch:switch'
update : alias for 'branch:update'
$ gi commit:
Actions:
commit:apply : apply a commit to curr branch (known as 'cherry-pick')
commit:correct : correct the last commit
commit:create : create a new commit
commit:fixup : correct the previous commit
commit:revert : create a new commit which reverts the target commit
commit:rollback : cancel recent commits up to the target commit-id
commit:show : show commits in current branch
commit:unmerge : rollback merge commit
Aliases:
correct : alias for 'commit:correct'
cc : alias for 'commit:create'
commit : alias for 'commit:create'
fixup : alias for 'commit:fixup'
commits : alias for 'commit:show'
unmerge : alias for 'commit:unmerge'
$ gi config:
Actions:
config : list/get/set/delete config values
config:alias : list/get/set/delete aliases of 'git' (not of 'gi')
config:setuser : set user name and email
$ gi file:
Actions:
file:blame : print commit-id, author, and timestap of each line
file:changes : show changes of files
file:delete : delete files or directories
file:egrep : find by pattern
file:list : list (un)tracked/changed/ignored/missing files
file:move : move files into a directory
file:rename : rename a file or directory to new name
file:rename:all : rename multi files by pattern
file:restore : restore files (= clear changes)
file:track : register files into the repository
Aliases:
changes : alias for 'file:changes'
files : alias for 'file:list'
register : alias for 'file:track'
track : alias for 'file:track'
$ gi help:
Actions:
help : print help message (of action if specified)
$ gi history:
Actions:
history : show commit history in various format
history:edit:cancel : cancel (or abort) `git rebase -i`
history:edit:resume : resume (= conitnue) suspended `git rebase -i`
history:edit:skip : skip current commit and resume
history:edit:start : start `git rebase -i` to edit commit history
history:notuploaded : show commits not uploaded yet
Aliases:
hist : alias for 'history -F graph'
histedit : alias for 'history:edit:start'
$ gi misc:
Actions:
misc:initfile : generate a init file, or print to stdout if no args
$ gi repo:
Actions:
repo:clone : copy a repository ('github:<user>/<repo>' is available)
repo:create : create a new directory and initialize it as a git repo
repo:init : initialize git repository with empty initial commit
repo:remote : list/get/set/delete remote repository
repo:remote:origin : get/set/delete origin (= default remote repository)
$ gi staging:
Actions:
staging:add : add changes of files into staging area
staging:clear : delete all changes in staging area
staging:edit : edit changes in staging area
staging:show : show changes in staging area
Aliases:
stage : alias for 'staging:add'
pick : alias for 'staging:add -p'
unstage : alias for 'staging:clear'
staged : alias for 'staging:show'
$ gi stash:
Actions:
stash:drop : delete latest changes from stash
stash:list : list stash history
stash:pop : restore latest changes from stash
stash:put : save current changes into stash
stash:show : show changes on stash
$ gi status:
Actions:
status:compact : show status in compact format
status:default : show status in default format
status:here : same as 'stats:compact .'
status:info : show various infomation of current status
Aliases:
status : alias for 'status:compact'
$ gi sync
Actions:
sync:both : download and upload commits
sync:pull : download commits from remote and apply them to local
sync:push : upload commits to remote
Aliases:
sync : alias for 'sync:both'
dl : alias for 'sync:pull'
download : alias for 'sync:pull'
pull : alias for 'sync:pull'
push : alias for 'sync:push'
up : alias for 'sync:push'
upload : alias for 'sync:push'
$ gi tag:
Actions:
tag : list/show/create/delete tags
tag:create : create a new tag
tag:delete : delete a tag
tag:download : download tags
tag:list : list tags
tag:upload : upload tags
Aliases:
tags : alias for 'tag:list'
## create an init file
$ gi misc:initfile > ~/.gi_init.rb
## set an environment variable
$ export GI_INITFILE=~/.gi_init.rb
For details, see the output of gi misc:initfile
.
$License: MIT License $ - $Copyright: copyright(c) 2023 [email protected] $