SYNOPSIS

git init [-q | --quiet] [--bare] [--template=<template-directory>]
         [--separate-git-dir <git-dir>] [--object-format=<format>]
         [--ref-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>

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

注意: 現時点では、 SHA-256 リポジトリと SHA-1 リポジトリの間に相互運用性はありません(no interoperability)。

歴史的に、 作者達は、 このような相互運用性機能を導入した場合、 SHA-256 リポジトリには下位互換性のない変更が必要になる可能性があると警告してきました。 今日期待されているのは、 互換性のある変更のみです。 更にいうと、 そのような変更が必要であることが判明した場合にも、 現在の Git で作成された SHA-256 リポジトリは、 データを失うことなく将来のバージョンの Git で使用できるようになることが期待できます。

--ref-format=<format>

リポジトリの ref 格納形式を <format> で指定します。 有効な値は以下のとおりです:

  • files は、 パックされた ref を持つ緩いファイル(loose files)用です。 これがデフォルトです。

  • reftable は reftable 形式です。 この形式は実験的なものであり、 その内部は変更される可能性があります。

--template=<template-directory>

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

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

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

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

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

Use <branch-name> for the initial branch in the newly created repository. If not specified, fall back to the default name (currently master, but this will change to main when Git 3.0 is released). The default name can be customized via the init.defaultBranch configuration variable.

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

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

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

umask
false

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

group
true

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

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

テンプレートのコピー元のディレクトリを指定します。

init.defaultBranch

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

init.defaultObjectFormat

新しいリポジトリのデフォルトのオブジェクト形式をオーバーライドできるようにします。 git-init(1)--object-format= を参照してください。 コマンド・ライン・オプションと GIT_DEFAULT_HASH 環境変数の両方とも、 この設定より優先されます。

init.defaultRefFormat

新しいリポジトリのデフォルトの ref ストレージ形式をオーバーライドできるようにします。 git-init(1)--ref-format= を参照してください。 コマンド・ライン・オプションと GIT_DEFAULT_REF_FORMAT 環境変数の両方とも、 この設定より優先されます。

GIT

Part of the git(1) suite