Git
English ▾ トピック ▾ 最新バージョン ▾ git-init は 2.47.0 で最後に更新されました

名前

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

概要

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

説明

このコマンドは空の Git リポジトリを作成します。基本的に、objectsrefs/headsrefs/tags、およびテンプレートファイルのためのサブディレクトリを含む .git ディレクトリです。コミットのない初期ブランチが作成されます(名前については、以下の --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>

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

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

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

--ref-format=<format>

リポジトリに指定された参照ストレージ<format>を指定します。有効な値は次のとおりです。

  • files は、packed-refs を使用した個別のファイルです。これがデフォルトです。

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

--template=<template-directory>

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

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

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

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

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

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

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

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

all
world
everybody

group と同じですが、すべてユーザーがリポジトリを読み取れるようにします。

<perm>

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

デフォルトでは、共有リポジトリでは構成フラグ receive.denyNonFastForwards が有効になっているため、強制的な非高速フォワードプッシュはできません。

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

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

名前がドットで始まらないテンプレートディレクトリ内のファイルとディレクトリは、作成後に $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-config[1] ドキュメントから選択的に含まれています。内容はそちらにあるものと同じです。

init.templateDir

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

init.defaultBranch

新しいリポジトリを初期化する場合などに、デフォルトのブランチ名を上書きできます。

init.defaultObjectFormat

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

init.defaultRefFormat

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

Git

git[1] スイートの一部

scroll-to-top