Fun with Git
A bunch of entertaining git
tricks and reminders for myself.
Configure your user name
For the current repository only.
git config user.email 'max.mustermann@example.com' git config user.name 'Max Mustermann'
Rename the author in all previous commits
When you start a project not caring about user names and emails, you can get into trouble once you want to publish it. :)
git filter-branch --commit-filter 'GIT_AUTHOR_NAME="Gaga" git-commit-tree "$@"'
Interesting variables to update:
GIT_AUTHOR_NAME
GIT_AUTHOR_EMAIL
GIT_COMMITTER_NAME
GIT_COMMITTER_EMAIL
You shouldn't do this when these commits are already otherwise published. (No, I don't know what will happen.)
Git with server-side repository
Make a bare-bones repo
On the server side, create a bare-bones repository (without working copy) containing your project.
Option A: make an empty bare-bones repo
cd mkdir -p repos/proj.git cd repos/proj.git git init --bare
Option B: from a clone
cd mkdir repos cd repos git clone --bare $ORIGINALREPO proj.git
Hook up client and server
Using SSH on the server
This is my strong preference for personal projects.
If you have a machine with a shared ssh account, you can also easily
use that with the ssh protocol,
e.g. ssh://username@hostname/full/path/to/repo.git
or username@hostname:path/relative/to/homedir/repo.git
. (Note: No ssh://
prefix when using relative paths.)
git remote add origin ssh://username@hostname/full/path/to/repo.git git push # works with an empty repo on server side.
Using git daemon on the server
Allow the repository to be exported by git daemon
:
touch repos proj.git/git-daemon-export-ok
Run daemon and allow pushes.
git daemon --base-path=repos --enable=receive-pack
On the client side, clone the repository:
git clone git://$HOSTNAME/proj cd proj # Modify, commit git push
Open source / Work workflow
This is big, so it's on a separate page.