More key Git techniques¶
There are a few more key Git commands and techniques that you need to know about.
.gitignore¶
When you’re working with Git, there are lots of things you won’t want to push, including:
- hidden system files
- .pyc files
- rendered documentation files
- … and many more
.gitignore
,
https://github.com/evildmp/afraid-to-commit/blob/master/.gitignore, is what
controls this. You should have a .gitignore
in your projects, and they
should reflect your way of working. Mine include the things that my
operating system and tools throw into the repository; you’ll find soon enough
what yours are.
With a good .gitignore
, you can do things like:
git add docs/
and add whole directories at a time without worrying about including unwanted files.
Starting a new Git project¶
You’ve been working so far with an existing Git project. It’s very easy to start a brand new project, or turn an existing one into a Git project. On GitHub, just hit the New repository button and follow the instructions.
Combining Git and pip¶
When you used pip to install a package inside a virtualenv, it put it on your
Python path, that is, in the virtualenv’s site-packages
directory. When
you’re actually working on a package, that’s not so convenient - a Git project
is the most handy thing to have.
On the other hand, cloning a Git repository doesn’t install it on your Python path (assuming that it’s a Python application), so though you can work on it, you can’t actually use it and test it as an installed package.
However, pip is Git-aware, and can install packages and put them in a convenient place for editing - so you can get both:
cd ~/
virtualenv git-pip-test
source git-pip-test/bin/activate
pip install -e git+git@github.com:python-parsley/parsley.git#egg=parsley
The -e
flag means editable; git+
tells it to use the Git protocol; #egg=parsley
tells it what to call it.
(Should you find that this causes an error, try using quotes around the target:
pip install -e "git+git@github.com:python-parsley/parsley.git#egg=parsley"
)
You can also specify the branch:
pip install -e git+git@github.com:python-parsley/parsley.git@master#egg=parsley
And now you will find an editable Git repository installed at:
~/git-pip-test/src/parsley
which is where any other similarly-installed packages will be, and just to prove that it really is installed:
$ pip freeze
-e git+git@github.com:python-parsley/parsley.git@e58c0c6d67142bf3ceb6eceffd50cf0f8dae9da1#egg=Parsley-master
wsgiref==0.1.2