日本語 ▾ トピック ▾ 最新バージョン ▾ git-init は 2.48.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。これがデフォルトです。

  • 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