git-init

コマンド名

「git-init」:空のGitリポジトリを作成、もしくは既存のリポジトリを再初期化

概要

git init [-q | --quiet] [--bare] [--template=<template_directory>]
         [--separate-git-dir <git dir>] [--object-format=<format>]
         [-b <branch-name> | --initial-branch=<branch-name>]
         [--shared[=<permissions>]] [directory]

説明

このコマンドは空のGitリポジトリを作成します。基本的にはobjectsrefs/headsrefs/tags、およびテンプレートファイルのサブディレクトリを持つ.gitディレクトリです。 マスターブランチのヘッドを参照する初期HEADファイルも作成されます。

$GIT_DIR環境変数が設定されている場合、リポジトリのベースとして./.gitの代わりに使用するパスを指定します。

オブジェクトストレージディレクトリが$GIT_OBJECT_DIRECTORY環境変数を介して指定されている場合、sha1ディレクトリがその下に作成されます。それ以外の場合、デフォルトの$GIT_DIR/objectsディレクトリが使用されます。

既存のリポジトリでgit initを実行しても安全となっています。すでに存在するものを上書きしてしまうことはありません。git initを再実行する主な理由としては新しく追加されたテンプレートを取得することです(もしくは-separate-git-dirが指定されている場合、リポジトリを別の場所に移動することです)。

オプション

-q
--quiet

エラーメッセージと警告メッセージのみを出力します。その他のすべての出力はされません。

--bare

ベアリポジトリを作成します。GIT_DIR 環境が設定されていない場合、現在のワークディレクトリに設定されます。

--object-format=<format>

リポジトリに指定されたオブジェクト形式(ハッシュアルゴリズム)を指定します。有効な値はsha1および(有効な場合)sha256です。sha1がデフォルトとなっています。

--template=<template_directory>

テンプレートを使用するディレクトリを指定します(以下の「テンプレートディレクトリ」セクションを参照してください)。

--separate-git-dir=<git dir>

リポジトリを$GIT_DIRまたは./.git/のいずれかのディレクトリとして初期化する代わりに、実際のリポジトリへのパスを含むテキストファイルを作成します。このファイルはリポジトリへのファイルシステムに依存しないGitシンボリックリンクとして機能します。

これが再初期化された場合、リポジトリは指定されたパスに移動されます。

-b <branch-name
--initial-branch=<branch-name>

新しく作成されたリポジトリの最初のブランチには指定された名前を使用します。指定しない場合、デフォルト名のmasterにフォールバックします。

--shared[=(false|true|umask|group|all|world|everybody|0xxx)]

Gitリポジトリを複数のユーザー間で共有するように指定します。これにより同じグループに属するユーザーがそのリポジトリにプッシュできるようになります。指定すると、設定変数「core.sharedRepository」が設定され、$GIT_DIRの下のファイルとディレクトリが要求された権限で作成されます。指定されていない場合、Gitはumask(2)によってレポートされた許可を使用します。

オプションには次の値を指定できます。値が指定されていない場合、デフォルトでグループとなります。

umask (または false)

umask(2)によってレポートされた許可を使用します。--sharedが指定されていない場合のデフォルトとなります。

group (または true)

リポジトリをグループ書き込み可能にします(そして、gitグループがすべてのユーザーのプライマリグループではない可能性があるため、g + sxとなります)。これは安全なumask(2)値の許可を広くするために使用されます。umaskは他の許可ビットにも適用されることに注意してください(例えば、umaskが0022の場合、グループを使用しても他の(グループ以外の)ユーザーから読み取り権限は削除されません)。リポジトリの許可を正確に指定する方法については0xxxを参照してください。

all (または world または everybody)

グループと同じですが、すべてのユーザーにリポジトリを読み取り可能にします。

0xxx

0xxxは8進数で各ファイルのモードは0xxxとなります。0xxxはユーザーのumask(2)値をオーバーライドします(グループとしての許可を拡大するだけでなく、すべてをそうします)。0640はグループで読み取り可能ですが、グループで書き込み不可または他のユーザーがアクセスできないリポジトリを作成します。0660は現在のユーザーとグループには読み取りと書き込みが可能ですが、他のユーザーにはアクセスできないリポジトリを作成します。
デフォルトでは設定フラグreceive.denyNonFastForwards が共有リポジトリで有効になっているため、早送り以外のプッシュをすることはできません。

ディレクトリを指定すると、コマンドはそのディレクトリ内で実行されます。このディレクトリが存在しない場合、これが作成されます。

テンプレートディレクトリ

名前がドットで始まらないテンプレートディレクトリ内のファイルとディレクトリは作成後に$GIT_DIRにコピーされます。

テンプレートディレクトリは次のいずれかとなります(順番に)。

  • --templateオプションで指定された引数
  • $GIT_TEMPLATE_DIR環境変数のコンテンツ
  • init.templateDir設定変数
  • デフォルトのテンプレートディレクトリである/usr/share/git-core/templates

デフォルトのテンプレートディレクトリにはいくつかのディレクトリ構造、推奨「除外パターン」(gitignore[5]を参照)、およびサンプルフックファイルが含まれています。

サンプルフックはデフォルトですべて無効になっています。サンプルフックの1つを有効にするには .sampleサフィックスを削除して名前を変更します。

フックの実行に関するより一般的な情報についてはgithooks[5]を参照してください。

既存のコードベースの新しいGitリポジトリを開始します。

$ cd /path/to/my/codebase
$ git init      (1)
$ git add .     (2)
$ git commit    (3)
  1. 「/path/to/my/codebase/.git」ディレクトリを作成します
  2. 既存のすべてのファイルをインデックスに追加します
  3. 履歴の最初のコミットとして元の状態を記録します

GIT

git[1]パッケージソフトの一部

git公式ドキュメント

init