Overview (not quite done here)
Basic and advanced features for initializing a Git repository – more content to be added.
Working with the template directory
By default, git init will populate your new .git directory with some auto-generated content, plus all of the content of the appropriate template directory.
If you don't specify a template directory, the default used is /usr/share/git-core/templates, which contains something like this:
.
├── branches/
├── description
├── hooks/
│ ├── applypatch-msg.sample*
│ ├── commit-msg.sample*
│ ├── fsmonitor-watchman.sample*
│ ├── post-update.sample*
│ ├── pre-applypatch.sample*
│ ├── pre-commit.sample*
│ ├── prepare-commit-msg.sample*
│ ├── pre-push.sample*
│ ├── pre-rebase.sample*
│ ├── pre-receive.sample*
│ └── update.sample*
└── info/
└── exclude
Rather than accepting the default directory and content, it's common for developers to want to immediately register their own hooks, which means setting up an alternate template directory.
From the man page for “git init'':
TEMPLATE DIRECTORY
Files and directories in the template directory whose name do
not start with a dot will be copied to the $GIT_DIR after it is
created.
The template directory will be one of the following (in order):
· the argument given with the --template option;
· the contents of the $GIT_TEMPLATE_DIR environment variable;
· the init.templateDir configuration variable; or
· the default template directory:
/usr/share/git-core/templates.
The default template directory includes some directory
structure, suggested "exclude patterns" (see gitignore(5)), and
sample hook files.
The sample hooks are all disabled by default, To enable one of
the sample hooks rename it by removing its .sample suffix.