Quick tip: when you have .gitignore ignoring everything (with a * entry), you need to use git-update-index --add FILE to actually add the file, instead of just git-add FILE.


To make a repository available over "dumb" HTTP, set up a bare repository and copy hooks/post-update.sample to hooks/post-update.

To add links from gitweb, add to the @git_base_url_list list in the configuration file.

Copying Files Between Repositories with History

Create a branch with only python files (slow; ignore the very verbose "won't delete directory" output):

git checkout -b filtered-commits git filter-branch -f --prune-empty --tree-filter 'find . -not -iname "*.py" -exec rm {} ;' filtered-commits

In the receiving repo:

git pull path/to/source/repo

See also:


git config --global --add color.ui true

Change Author Email in Recent Commits

For the most recent commit, use:

git commit --amend --author="First Last <>"

To edit specific commits, use rebase -i and "edit" the commits you want to change and use --amend as above for each.

Managing Multiple Repositories

Use the mr tool (I haven't tried this yet).