git init
このページでは、git init
コマンドについて詳しく説明します。このページを最後まで読むと、git init
の主要な機能と拡張機能がわかります。ここでは、以下について説明します。
git init
オプションと使い方.git
ディレクトリの概要- カスタムの
git init
ディレクトリ環境の値 git init
対git clone
git init
ベアリポジトリgit init
テンプレート
git init
は Git リポジトリを新たに作成するコマンドです。このコマンドは、バージョン管理を行っていない既存のプロジェクトを Git リポジトリに変換する場合や、空の新規リポジトリを作成して初期化する場合に使用します。このコマンドを除くほぼすべてのコマンドは初期化されたリポジトリ以外に適用できないため、新規プロジェクトを開始する場合、通常はこのコマンドが最初に実行するコマンドとなります。
git init
を実行すると、現在の作業ディレクトリに .git
サブディレクトリが作成され、新しいリポジトリに必要な Git メタデータがすべて格納されます。このメタデータには、オブジェクト、参照、テンプレートファイル用のサブディレクトリが含まれます。現在チェックアウトされているコミットを指す HEAD
ファイルも作成されます。
プロジェクトのルートディレクトリの .git
ディレクトリを除けば、既存のプロジェクトはそのまま残ります (SVN と異なり、Git はすべてのサブディレクトリに .git
サブディレクトリを必要としません)。
既定では、git init
は、Git 構成を .git
サブディレクトリ パスで初期化します。サブディレクトリ パスは、必要に応じて他の場所に変更、カスタマイズが可能です。$GIT_DIR
環境変数をカスタム パスに設定すると、git init
はそこで Git 構成ファイルを初期化します。また、--separate-git-dir
引数を渡しても同じ結果となります。独立した .git
サブディレクトリを使う一般的な例は、システム構成の「ドットファイル」 (.bashrc
、.vimrc
、など) をホーム ディレクトリに保持したまま、.git
フォルダーを別の場所にすることです。
関連資料
Git Branch コマンド
ソリューションを見る
Bitbucket Cloud での Git の使用方法についてのチュートリアルです。
使用法
SVN と比較すると、git init
コマンドは、新規のバージョン管理プロジェクトをきわめて簡単に作成できます。Git では、手作業でリポジトリの作成、ファイルのインポート、作業コピーのチェックアウトなどを行う必要はありません。また、既存のサーバーや管理者権限も不要です。プロジェクトサブディレクトリに移動して git init
を実行するだけで、完全な機能を備えた Git リポジトリを作成できます。
git init
現在のディレクトリを Git リポジトリに変換します。このコマンドを実行すると現在のディレクトリに .git
サブディレクトリが追加され、プロジェクトのバージョンを記録できるようになります。
git init <directory>
指定したディレクトリに空の Git リポジトリを作成します。このコマンドを実行すると、.git
サブディレクトリのみを含む、<directory> という新規サブディレクトリが作成されます。
プロジェクトディレクトリで既に git init
を実行していて .git
サブディレクトリが存在している場合も、安心して同じプロジェクトディレクトリで git init
を再実行できます。既存の .git
構成は上書きされません。
git init 対 git clone
簡易メモ: git init
と git clone
は非常に紛らわしいです。全体的に見れば、どちらも「新しい Git リポジトリの初期化」に使用できます。ただし、git clone
は git init
に依存しています。git clone
は、既存のリポジトリのコピーを作成する際に使用します。内部では、git clone
はまず git init
を呼び出して新しいリポジトリを作成します。その後、既存のリポジトリからデータをコピーして、一連の作業ファイルを新たにチェック アウトします。詳細については、git clone ページをご確認ください。
ベアリポジトリ --- git init --bare
git init --bare <directory>
作業ディレクトリを持たない空の Git リポジトリを作成して初期化します。共有リポジトリは必ず --bare
フラグを指定して作成する必要があります (下の補足説明参照)。--bare
フラグを指定して作成したリポジトリの名称の最後には、慣例的に .git
が付加されます。たとえば、my-project
という名称のリポジトリのベアバージョンは、my-project.git
という名称のディレクトリに格納されます。
--bare
フラグを指定すると、作業ディレクトリを持たないリポジトリが作成されます。このリポジトリでファイルの編集や変更のコミットをすることはできません。git push と git pull は行うが、直接コミットを行わない場合は、ベアリポジトリを作成します。ノンベアリポジトリにブランチのプッシュを行うと変更が上書きされる可能性があるため、中央リポジトリは必ずベアリポジトリとして作成する必要があります。--bare
は、リポジトリを開発環境ではなくストレージ領域として認識させる方法と考えてください。つまり、実質的にすべての Git ワークフローにおいて、中央リポジトリはベアであり、開発者のローカルリポジトリはノンベアということです。
git init --bare
の最も一般的な使用例は、以下のようにリモートの中央リポジトリの作成です。
ssh <user>@<host> cd path/above/repo git init --bare my-project.git
まず、中央リポジトリを作成する予定のサーバーに SSH で接続します。次に、プロジェクトを保存するディレクトリに移動します。最後に、--bare
フラグを使用して中央ストレージリポジトリを作成します。その後、開発者は my-project.git
を使用して、各自の開発用マシーンにローカルコピーを作成します。
git init テンプレート
git init <directory> --template=<template_directory>
新しい Git リポジトリを作成して初期化し、<template_directory>
からファイルをコピーします。
テンプレートを使うと、事前に定義した .git
サブディレクトリで新しいリポジトリを初期化できます。新しいリポジトリの .git
サブディレクトリにコピーする、既定のディレクトリとファイルを設定したテンプレートを構成できます。通常、既定の Git テンプレートは `/usr/share/git-core/templates`
ディレクトリにありますが、マシンによってパスが異なる場合があります。
既定のテンプレートは、テンプレート機能の活用方法がわかる優れた参考資料です。既定のテンプレートで使われている強力なテンプレート機能に、Git フック構成があります。事前定義済みの Git フックを使ったテンプレートを作成すれば、すぐに使える一般的なフックを使って、新たに作成した Git リポジトリを初期化できます。Git フックの詳細については、Git フックのページをご覧ください。
構成
git init <directory> --template=<template_directory>
git init
のすべての構成では、<directory>
引数を必ず使用します。
を指定すると、このコマンドはそのディレクトリ内で実行されます。ディレクトリが存在しない場合は、作成されます。既に説明したオプションや構成以外にも、Git init
にはコマンド・ライン・オプションがいくつかあります。すべてのオプションは以下のとおりです。
-Q
--QUIET
「重大レベル」のメッセージ、エラー、警告のみを出力します。その他の出力はすべて抑制されます。
--BARE
ベアリポジトリを作成します (上述の「ベアリポジトリ」セクションをご覧ください)。
--TEMPLATE=
使用するテンプレートがあるディレクトリを指定します (上述の「git init テンプレート」セクションをご覧ください)。
--SEPARATE-GIT-DIR=
へのパスを含んだテキストファイルを作成します。このファイルは、.git
ディレクトリへのリンクの役目を果たします。これは、プロジェクトの作業ファイルとは違う場所やドライブに .git
ディレクトリを格納する場合に役立ちます。--separate-git-dir
の一般的な使用例を以下に挙げます。
- システム構成の「ドットファイル」 (
.bashrc、.vimrc
など) をホームディレクトリに保持したまま、.git
フォルダーを別の場所にする。 - Git 履歴のディスクサイズが非常に大きくなり、独立した別の大容量ドライブに移す必要がある。
`www:root`
のような公開ディレクトリに Git プロジェクトを作成したい。
既存のリポジトリで git init --separate-git-dir
を呼び出すと、.git dir
は指定された
パスに変わります。
--SHARED[=(FALSE|TRUE|UMASK|GROUP|ALL|WORLD|EVERYBODY|0XXX)]
新規リポジトリのアクセス権限を設定します。Unix レベルの権限を使っているユーザーとグループのうち、リポジトリとのプッシュ / プルを許可するユーザーとグループを指定します。
例
既存の code をベースにして新しい Git リポジトリを作成する
cd /path/to/code \
git init \
git add . \
git commit
新しいベアリポジトリを作成する
git init --bare /path/to/repo.git
git init テンプレートを作成し、そのテンプレートから新しい Git リポジトリを作成して初期化する
mkdir -p /path/to/template \
echo "Hello World" >> /absolute/path/to/template/README \
git init /new/repo/path --template=/absolute/path/to/template \
cd /new/repo/path \
cat /new/repo/path/README
この記事を共有する
次のトピック
おすすめコンテンツ
次のリソースをブックマークして、DevOps チームのタイプに関する詳細や、アトラシアンの DevOps についての継続的な更新をご覧ください。