Igit is an interactive supplementary CLI to git for better git experience.
For a long time I've been using a variety of aliases for git commands, some of which were custom and aimed to boosting my git productivity - so I've decided to package it into a product for others to use.
- Fast commits - add, commit & push, instantly.
- Undo changes - cancel changes made to any file.
- Branch hopping - move between branches, even if you have unstaged changes, without having to stage them.
- Easy ignore - add files to ignore, sync with remote.
- Interactivity - select and check instead of typing.
With pip:
pip install igit
Push / Commit your code in one command.
git add .
git commit -m "commit message"
git push
igit up "commit message"
You can also go through the whole interactive process:
- If you don't specify a commit message it will default to 'fast commit'.
- Same goes for
igit save
- without pushing to remote.
Undo changes (unstaged) in a file or in all files.
# To undo changes in an unstaged changed file:
igit undo file_1.py
# To pick a file just drop the file's name:
igit undo
# undo all changes
igit undo -all
- Same goes for
igit unstage
with respect to added files.
Move easily between local branches, enable hopping to move seamlessly even in case of unstaged changes.
# To change branches:
igit branch
# To change branches with unstaged changes:
igit branch --hopping_on
# Create a new branch and change into it:
igit branch --create
- When in hopping mode all change are stored to the git stash.
You can use
git stash list
to see stashed changes andgit stash pop
to retrieve stashed changes
Add files to ignore, create ignore files from templetes.
# To add files to .gitignore:
igit ignore
# To create a .gitignore:
igit ignore --create
- In case your local .gitignore is not in sync with your remote .gitignore you can use:
# Reset .gitignore:
igit ignore --reset
And then push to remote - your current .gitignore will take effect.
Select a file to view diff.
igit diff
igit is cross-platform โ Windows, macOS, Linux
๐ค windows users will get best experience with windows terminal - powershell session.
- click
- gitpython
- inquirer
- emoji
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. Please make sure to update tests as appropriate.
- Clone this project
- cd into project directory
- Run: pipenv install
- Run: pipenv --venv
- Add bash alias:
alias igit='PYTHONPATH=<LOCAL GITSY PROJECT DIR> <PIPENV VENV PATH>/bin/python3 <LOCAL IGIT PROJECT DIR>/igit/cli.py'
- Now you can run igit from bash and code changes in local igit dir will apply.