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

NAME

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 リポジトリを作成します。基本的には、.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=<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 (or world or everybody)

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

<perm>

<perm>0 の接頭辞が付いた3桁の8進数で、各ファイルのモードは <perm> になります。 <perm> は、ユーザーの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. ヒストリの最初のコミットとして、元の状態を記録します。

GIT

Part of the git[1] suite

scroll-to-top