5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Git】initコマンドについて

Last updated at Posted at 2021-02-17

initコマンドとは

initコマンドは新しいGitリポジトリを作成するために使用します。リポジトリは「ファイルやディレクトリの状態を管理する場所」のことを指します。一連のGitのコマンドはリポジトリが管理しているディレクトリ内で使用することができます。

実際にinitコマンドを実行してみると現在のディレクトリに**.git**ディレクトリが作成されます。基本的には.gitディレクトリがリポジトリとなります。

git initの処理を各コマンドの出力から確認してみましょう。今回リポジトリを作成するディレクトリの名前はgit_dirとします。

initコマンド
# 現在のディレクトリ
$ pwd
/home/hogehoge/git_dir

#git_dirが空であることを確認
$ ls -a
./  ../

$ git init
Initialized empty Git repository in /home/hogehoge/git_dir/.git/

# .gitディレクトリが作成されていることを確認
$ ls -a
./  ../  .git/

git initによってgit_dirディレクトリに.gitディレクトリ(=リポジトリ)が作成されます。リポジトリが作成されることで、gitコマンドでgit_dirディレクトリを管理できるようになります。このようにgitを使えるように準便を整えるためのコマンドがinitコマンドです。

オプション

基本オプション

-q / --quiet

コマンド実行時に表示されるメッセージを省略します。ただし、errorメッセージとwarningメッセージは表示されます。

$ git init
Initialized empty Git repository in /home/hogehoge/git_dir/.git/

# 作成時のメッセージが表示されない
$ git init -q

--bare

ベアリポジトリと呼ばれる特殊なGitリポジトリを作成します。bareとは日本語で「裸の」という意味があります。ベアリポジトリには、実際のプログラムやディレクトリはありませんが**.gitの中にあったファイルだけ持っています。ベアリポジトリはpush先となる集約されるようなリポジトリに対して作成します。ベアリポジトリでないリポジトリはノンベアリポジトリ**と呼びます。--bareを使用することで、対象のディレクトリを.gitディレクトリそのものとして扱います。

ベアリポジトリの特徴

  • 作業用ディレクトリを持たない
  • 管理用ディレクトリ(リポジトリ)のみ持つ
ノンベアリポジトリの作成
$ git init
Initialized empty Git repository in /home/hogehoge/git_dir/

$ ls -a
./  ../  .git/

$ ls .git/
config  description  HEAD  hooks/  info/  objects/  refs/
ベアリポジトリの作成
$ git init --bare
Initialized empty Git repository in /home/hogehoge/git_dir/

$ ls
config  description  HEAD  hooks/  info/  objects/  refs/

ノンベアリポジトリでは現在のディレクトリに**.gitディレクトリが作成されますが、ベアリポジトリでは現在のディレクトリが.gitディレクトリの中身そのもの**になっていることが確認できます。

応用オプション

--object-format=<format>

#####<format> = sha1(default), sha256

gitはプロジェクトの状態をオブジェクトで管理しています。いくつかの種類のオブジェクトがありますが、オブジェクトは全てzlibで圧縮されハッシュ値が生成されています。--object-formatオプションではハッシュ値のハッシュ関数を指定することができます。Gitではsha1とsha256の2種類のみ指定できます。

※Git Documentationではsha1が推奨されているので特に理由がなければデフォルトのsha1のままで大丈夫です。

--template=<template_directory>

#####<template_directory> = テンプレートディレクトリ名

テンプレートとなるディレクトリ(TEMPLATE DIRECTORY)を指定します。TEMPLATE DIRECTORYを事前に設定しておくことで同じような状態を再現することができます。

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

#####<git dir> = Gitリポジトリにするディレクトリ

git initを実行すると通常は.gitディレクトリを作成しますが。--separate-git-dirオプションを指定すると、本来作成される.gitディレクトリの代わりに**.gitテキストファイル**を生成します。.gitテキストファイルには<git dir>で指定されたディレクトリのパスが記載されています。.gitディレクトリに作成されていた一連のファイルは全てこの指定したディレクトリに置かれます。

すでに存在するGitリポジトリでgit init --separate-git-dirをおこなうとGitリポジトリは<git dir>に移動します。

--separate-git-dirオプション
# 現在のディレクトリ
$ pwd
/home/hogehoge/git_dir

# オプションを使用
$ git init --separate-git-dir=/home/hogehoge/sep_git_dir/
Initialized empty Git repository in /home/hogehoge/sep_git_dir/

# git_dirディレクトリには.gitファイルが生成
$ ls -a
./  ../  .git

# 作成されたテキストファイルの中身を確認
$ cat .git
gitdir: /home/hogehoge/sep_git_dir/

# sep_git_dirディレクトリにはリポジトリが生成
$ ls /home/hogehoge/sep_git_dir/
config  description  HEAD  hooks/  info/  objects/  refs/

このようにすることでsep_git_dirをGitリポジトリとして扱い、git_dirを作業用ディレクトリとして扱うことができます。作業ディレクトリではGitコマンドを使用できますが.gitディレクトリが存在しないため、ファイル検索がスムーズにおこなえるようになります。また、.gitディレクトリを隠しておくことで誤ってファイルを書き換えてしまうことを防ぐこともできます。

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

#####<branch-name> = ブランチ名

初期化時に自動で作成されるブランチの名前を指定します。Gitではデフォルトでmasterブランチが作成されていますが、それ以外の名前にしたいときにこのオプションを使用します。デフォルトのブランチ名は環境変数init.defaultBranchで設定されているため、こちらを変更することでデフォルトのブランチ名を設定することもできます。

--shared=<permission>

#####<option> = (false|true|umask|group|all|world|everybody|0xxx)

作成しようとしているリポジトリは共有リポジトリとして作成されます。デフォルトではリポジトリは作成したユーザーしかpushができません。複数人で一つのプロジェクトをGitで運用する場合は、--sharedオプションで権限を追加します。

false / umask : umaskの値を利用する。--sharedオプションを使用しない場合も適用される。
true / group : グループに対して書き込み権限を追加する
all / world / everybody : グループに対して書き込み権限を追加し、その他のユーザーに対して読み込み権限を追加する
0xxx : 4桁の数値でパーミッションを指定する

まとめ

initコマンドはGitリポジトリを作成する際に使用します。自らプロジェクトを立ち上げる際は必ず使用するコマンドなので覚えておきましょう。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?