Metadata-Version: 2.1
Name: igit
Version: 2020.10.25
Summary: Interactive git and more
Home-page: https://github.com/kobibarhanin/igit
Author: kobi
Author-email: 
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Requires-Dist: blessed (==1.17.6)
Requires-Dist: click (==7.1.2)
Requires-Dist: click-help-colors (==0.8)
Requires-Dist: emoji (==0.6.0)
Requires-Dist: gitdb (==4.0.5)
Requires-Dist: gitignore-parser (==0.0.8)
Requires-Dist: GitPython (==3.1.9)
Requires-Dist: inquirer (==2.7.0)
Requires-Dist: invoke (==1.4.1)
Requires-Dist: pathlib2 (==2.3.5)
Requires-Dist: prompt-toolkit (==1.0.14)
Requires-Dist: psutil (==5.7.2)
Requires-Dist: Pygments (==2.7.1)
Requires-Dist: PyInquirer (==1.0.3)
Requires-Dist: python-editor (==1.0.4)
Requires-Dist: readchar (==2.0.1)
Requires-Dist: regex (==2020.10.15)
Requires-Dist: six (==1.15.0)
Requires-Dist: smmap (==3.0.4)
Requires-Dist: termcolor (==1.1.0)
Requires-Dist: wcwidth (==0.2.5)

[![Build Status](https://travis-ci.com/kobibarhanin/gitenv.svg?branch=master)](https://travis-ci.com/kobibarhanin/igit)
[![PyPI version](https://badge.fury.io/py/igit.svg)](https://badge.fury.io/py/igit)

# Igit - Interactive Git

Igit is an interactive supplementary CLI to git for better git experience.

## Main features:
1. Fast commits - add, commit & push, instantly. 
2. Undo changes - cancel changes made to any file.
3. Branch hopping - move between branches, even if you have unstaged changes, without having to stage them.
4. Easy ignore - add files to ignore, sync with remote. 
5. Interactivity - select and check instead of typing.


## Installation

With [pip](https://pip.pypa.io/en/stable/):

```bash
pip install igit
```

## Usage
![help](examples/help.png)

### Fast commits

#### From:
```bash
# git add .
# git commit -m "commit message"
# git push 
```

#### To:
```bash
igit up "commit message" 
```

![up](examples/up_cmd.png)

#### Notes:
- 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

```bash
# 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](examples/undo_cmd.png)

#### Notes:
- Same goes for ```igit unstage``` with respect to added files.


### Branch hopping

```bash
# To change branches:
igit branch
# To change branches with unstaged changes:
igit branch --hopping_on 
```
![branch](examples/branch_cmd.png)

#### Notes:
- When in hopping mode all change are stored to the git stash. 
You can use ```git stash list``` to see stashed changes and ```git stash pop``` to retrieve stashed changes


### Branch hopping

```bash
# To add files to .gitignore:
igit ignore
# To create a .gitignore:
igit ignore --create  
```
![ignore](examples/ignore_cmd.png)

#### Notes:
- In case your local .gitignore is not in sync with your remote .gitignore you can use: 
```bash
# Reset .gitignore:
igit ignore --reset 
```
And then push to remote - your current .gitignore will take effect. 

## Compatibility
igit is cross-platform → Windows, macOS, Linux 

🤓 windows users will get best experience with windows terminal - powershell session.


## Built with

- click
- gitpython
- inquirer
- emoji

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

### Local dev environment (macOS / Linux)

- Clone this project
- cd into project directory
- Run: pipenv install
- Run: pipenv --venv 
- Add [bash alias](https://linuxize.com/post/how-to-create-bash-aliases/):
```bash
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.



## License
[MIT](https://choosealicense.com/licenses/mit/)


