Git
日本語 ▾ Topics ▾ Latest version ▾ git-init last updated in 2.47.0

NAME

git-init - 空のGitリポジトリを作成、または既存のリポジトリを再初期化する

概要

git init [-q | --quiet] [--bare] [--template=<テンプレートディレクトリ>]
	  [--separate-git-dir <gitディレクトリ>] [--object-format=<フォーマット>]
	  [--ref-format=<フォーマット>]
	  [-b <ブランチ名> | --initial-branch=<ブランチ名>]
	  [--shared[=<パーミッション>]] [<ディレクトリ>]

説明

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

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

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

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

オプション

-q
--quiet

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

--bare

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

--object-format=<フォーマット>

リポジトリのオブジェクトフォーマット(ハッシュアルゴリズム)を指定します。有効な値は’sha1’と(有効な場合は)'sha256’です。'sha1’がデフォルトです。

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

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

--ref-format=<フォーマット>

リポジトリの参照ストレージフォーマットを指定します。有効な値は:

Warning

Missing ja/ref-storage-format.txt

See original version for this content.

--template=<テンプレートディレクトリ>

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

--separate-git-dir=<gitディレクトリ>

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

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

-b <ブランチ名>
--initial-branch=<ブランチ名>

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

--shared[=(false|true|umask|group|all|world|everybody|<パーミッション>)]

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 (or world or everybody)

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

<パーミッション>

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

デフォルトでは、共有リポジトリでは設定フラグの receive.denyNonFastForwards が有効になっており、高速転送ではないプッシュを強制できません。

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

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

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

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

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

  • $GIT_TEMPLATE_DIR 環境変数の内容。

  • init.templateDir 構成変数。

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

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

サンプルフックは、デフォルトではすべて無効になっています。サンプルフックを有効にするには、フックの名前を変更し、接尾辞 .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. ヒストリの最初のコミットとして、元の状態を記録します。

設定

Warning

Missing ja/includes/cmd-config-section-all.txt

See original version for this content.

Warning

Missing ja/config/init.txt

See original version for this content.

GIT

Part of the git[1] suite

scroll-to-top