SYNOPSIS

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>]

DESCRIPTION

このコマンドは、空のGitリポジトリを作成します。基本的には、 objectsrefs/headsrefs/tags と テンプレートファイルのためのサブディレクトリを持つ .git ディレクトリです。コミットのない初期ブランチが作成されます(初期ブランチの名前については、以下の --initial-branch オプションを参照してください)。

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

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

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

OPTIONS

-q
--quiet

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

--bare

ベア(bare)リポジトリを作成します。 GIT_DIR 環境変数が設定されていない場合は、現在の作業ディレクトリに設定されます。

--object-format=<format>

リポジトリに設定するブジェクト形式(ハッシュアルゴリズム)を指定します。 有効な値は「sha1」および、(有効な場合、)「sha256」です。「sha1」がデフォルトです。

このオプションは実験的なものです! SHA-256のサポートは実験的なものであり、まだ初期段階です。 SHA-256リポジトリは、通常、「通常の」SHA-1リポジトリと作業を共有できません。 たとえば、SHA-256リポジトリに関連するGit内部ファイル形式は、下位互換性のない方法で変更される可能性があると想定する必要があります。テスト目的でのみ --object-format=sha256 を使用してください。

--template=<template-directory>

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

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

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

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

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

新しく作成されたリポジトリの最初のブランチには、指定された名前を使用します。 指定しない場合は、デフォルト名にフォールバックします(現在は master ですが、将来変更される可能性があります。名前は init.defaultBranch 構成変数を使用してカスタマイズできます)。

--shared[=(false|true|umask|group|all|world|everybody|<perm>)]

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

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

umask (or false)

umask(2) によって報告されたアクセス許可を使用します。 --shared が指定されていない場合のデフォルトです。

group (or true)

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

all (または world または everybody)

group と同じですが、すべてのユーザーからリポジトリを読めるようにします。

<perm>

各ファイルはモード <perm> を持ち、 <perm> は、 (訳注:C言語流に、) 0 が先頭に付いた 3 桁の 8 進数です。 <perm> は、ユーザーの umask(2) 値を上書きします(groupall のように許可を緩めるだけではありません)。 0640 は、 グループで読み取り可能であるが、 グループで書き込み可能でなく、 他のユーザーがアクセスできないリポジトリを作成します。 0660 は、現在のユーザーとグループが読み書きできるが、 他のユーザーがアクセスできないリポジトリを作成します(ディレクトリと実行可能ファイルは、ユーザーの対応するクラスの r ビットから x ビットを取得します)。

デフォルトでは、共有リポジトリ内で、構成フラグ receive.denyNonFastForwards が有効(ture)になっているため、早送り(fast-forward)以外のプッシュを強制することはできません。

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

TEMPLATE DIRECTORY

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

テンプレートディレクトリは、以下のいずれかになります(この優先順位です):

  • --template オプションで指定された引数

  • $GIT_TEMPLATE_DIR 環境変数の内容

  • init.templateDir 構成変数

  • デフォルトのテンプレートディレクトリ: /usr/share/git-core/templates

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

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

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

EXAMPLES

既存のコードベースの新しいGitリポジトリを開始します
$ cd /path/to/my/codebase
$ git init      <1>
$ git add .     <2>
$ git commit    <3>
  1. /path/to/my/codebase/.git ディレクトリを作成します。

  2. 既存のすべてのファイルをインデックスに追加します。

  3. 履歴の最初のコミットとして、初期の状態を記録します。

CONFIGURATION

このセクションの以下のすべては、 git-config(1) ドキュメントの抜粋です。 内容は git-config(1) ドキュメント にあるものと同一です:

init.templateDir

テンプレートのコピー元のディレクトリを指定します。 (git-init(1) の「TEMPLATE DIRECTORY」セクションを参照してください。)

init.defaultBranch

デフォルトのブランチ名を上書きできます。例えば、新しいリポジトリを初期化するとき。

GIT

Part of the git(1) suite