User Tools

Site Tools


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'':

   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

   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:

   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.
git_init.txt · Last modified: 2019/02/21 12:57 by rpjday